﻿/**
 * Swiper 3.3.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * 
 * http://www.idangero.us/swiper/
 * 
 * Copyright 2016, Vladimir Kharlampidi
 * The iDangero.us
 * http://www.idangero.us/
 * 
 * Licensed under MIT
 * 
 * Released on: February 7, 2016
 */
(function () {
  var a;
  var f = function (m, L) {
    if (!(this instanceof f)) {
      return new f(m, L)
    }
    var t = {
      direction: "horizontal",
      touchEventsTarget: "container",
      initialSlide: 0,
      speed: 300,
      autoplay: false,
      autoplayDisableOnInteraction: true,
      autoplayStopOnLast: false,
      iOSEdgeSwipeDetection: false,
      iOSEdgeSwipeThreshold: 20,
      freeMode: false,
      freeModeMomentum: true,
      freeModeMomentumRatio: 1,
      freeModeMomentumBounce: true,
      freeModeMomentumBounceRatio: 1,
      freeModeSticky: false,
      freeModeMinimumVelocity: 0.02,
      autoHeight: false,
      setWrapperSize: false,
      virtualTranslate: false,
      effect: "slide",
      coverflow: {
        rotate: 50,
        stretch: 0,
        depth: 100,
        modifier: 1,
        slideShadows: true
      },
      flip: {
        slideShadows: true,
        limitRotation: true
      },
      cube: {
        slideShadows: true,
        shadow: true,
        shadowOffset: 20,
        shadowScale: 0.94
      },
      fade: {
        crossFade: false
      },
      parallax: false,
      scrollbar: null,
      scrollbarHide: true,
      scrollbarDraggable: false,
      scrollbarSnapOnRelease: false,
      keyboardControl: false,
      mousewheelControl: false,
      mousewheelReleaseOnEdges: false,
      mousewheelInvert: false,
      mousewheelForceToAxis: false,
      mousewheelSensitivity: 1,
      hashnav: false,
      breakpoints: undefined,
      spaceBetween: 0,
      slidesPerView: 1,
      slidesPerColumn: 1,
      slidesPerColumnFill: "column",
      slidesPerGroup: 1,
      centeredSlides: false,
      slidesOffsetBefore: 0,
      slidesOffsetAfter: 0,
      roundLengths: false,
      touchRatio: 1,
      touchAngle: 45,
      simulateTouch: true,
      shortSwipes: true,
      longSwipes: true,
      longSwipesRatio: 0.5,
      longSwipesMs: 300,
      followFinger: true,
      onlyExternal: false,
      threshold: 0,
      touchMoveStopPropagation: true,
      uniqueNavElements: true,
      pagination: null,
      paginationElement: "span",
      paginationClickable: false,
      paginationHide: false,
      paginationBulletRender: null,
      paginationProgressRender: null,
      paginationFractionRender: null,
      paginationCustomRender: null,
      paginationType: "bullets",
      resistance: true,
      resistanceRatio: 0.85,
      nextButton: null,
      prevButton: null,
      watchSlidesProgress: false,
      watchSlidesVisibility: false,
      grabCursor: false,
      preventClicks: true,
      preventClicksPropagation: true,
      slideToClickedSlide: false,
      lazyLoading: false,
      lazyLoadingInPrevNext: false,
      lazyLoadingInPrevNextAmount: 1,
      lazyLoadingOnTransitionStart: false,
      preloadImages: true,
      updateOnImagesReady: true,
      loop: false,
      loopAdditionalSlides: 0,
      loopedSlides: null,
      control: undefined,
      controlInverse: false,
      controlBy: "slide",
      allowSwipeToPrev: true,
      allowSwipeToNext: true,
      swipeHandler: null,
      noSwiping: true,
      noSwipingClass: "swiper-no-swiping",
      slideClass: "swiper-slide",
      slideActiveClass: "swiper-slide-active",
      slideVisibleClass: "swiper-slide-visible",
      slideDuplicateClass: "swiper-slide-duplicate",
      slideNextClass: "swiper-slide-next",
      slidePrevClass: "swiper-slide-prev",
      wrapperClass: "swiper-wrapper",
      bulletClass: "swiper-pagination-bullet",
      bulletActiveClass: "swiper-pagination-bullet-active",
      buttonDisabledClass: "swiper-button-disabled",
      paginationCurrentClass: "swiper-pagination-current",
      paginationTotalClass: "swiper-pagination-total",
      paginationHiddenClass: "swiper-pagination-hidden",
      paginationProgressbarClass: "swiper-pagination-progressbar",
      observer: false,
      observeParents: false,
      a11y: false,
      prevSlideMessage: "Previous slide",
      nextSlideMessage: "Next slide",
      firstSlideMessage: "This is the first slide",
      lastSlideMessage: "This is the last slide",
      paginationBulletMessage: "Go to slide {{index}}",
      runCallbacksOnInit: true
    };
    var A = L && L.virtualTranslate;
    L = L || {};
    var I = {};
    for (var K in L) {
      if (typeof L[K] === "object" && L[K] !== null && !(L[K].nodeType || L[K] === window || L[K] === document || (typeof c !== "undefined" && L[K] instanceof c) || (typeof jQuery !== "undefined" && L[K] instanceof jQuery))) {
        I[K] = {};
        for (var q in L[K]) {
          I[K][q] = L[K][q]
        }
      } else {
        I[K] = L[K]
      }
    }
    for (var r in t) {
      if (typeof L[r] === "undefined") {
        L[r] = t[r]
      } else {
        if (typeof L[r] === "object") {
          for (var o in t[r]) {
            if (typeof L[r][o] === "undefined") {
              L[r][o] = t[r][o]
            }
          }
        }
      }
    }
    var O = this;
    O.params = L;
    O.originalParams = I;
    O.classNames = [];
    if (typeof a !== "undefined" && typeof c !== "undefined") {
      a = c
    }
    if (typeof a === "undefined") {
      if (typeof c === "undefined") {
        a = window.Dom7 || window.Zepto || window.jQuery
      } else {
        a = c
      }
      if (!a) {
        return
      }
    }
    O.$ = a;
    O.currentBreakpoint = undefined;
    O.getActiveBreakpoint = function () {
      if (!O.params.breakpoints) {
        return false
      }
      var p = false;
      var W = [],
        V;
      for (V in O.params.breakpoints) {
        if (O.params.breakpoints.hasOwnProperty(V)) {
          W.push(V)
        }
      }
      W.sort(function (X, Y) {
        return parseInt(X, 10) > parseInt(Y, 10)
      });
      for (var s = 0; s < W.length; s++) {
        V = W[s];
        if (V >= window.innerWidth && !p) {
          p = V
        }
      }
      return p || "max"
    };
    O.setBreakpoint = function () {
      var p = O.getActiveBreakpoint();
      if (p && O.currentBreakpoint !== p) {
        var s = p in O.params.breakpoints ? O.params.breakpoints[p] : O.originalParams;
        var V = O.params.loop && (s.slidesPerView !== O.params.slidesPerView);
        for (var W in s) {
          O.params[W] = s[W]
        }
        O.currentBreakpoint = p;
        if (V && O.destroyLoop) {
          O.reLoop(true)
        }
      }
    };
    if (O.params.breakpoints) {
      O.setBreakpoint()
    }
    O.container = a(m);
    if (O.container.length === 0) {
      return
    }
    if (O.container.length > 1) {
      var S = [];
      O.container.each(function () {
        var p = this;
        S.push(new f(this, L))
      });
      return S
    }
    O.container[0].swiper = O;
    O.container.data("swiper", O);
    O.classNames.push("swiper-container-" + O.params.direction);
    if (O.params.freeMode) {
      O.classNames.push("swiper-container-free-mode")
    }
    if (!O.support.flexbox) {
      O.classNames.push("swiper-container-no-flexbox");
      O.params.slidesPerColumn = 1
    }
    if (O.params.autoHeight) {
      O.classNames.push("swiper-container-autoheight")
    }
    if (O.params.parallax || O.params.watchSlidesVisibility) {
      O.params.watchSlidesProgress = true
    }
    if (["cube", "coverflow", "flip"].indexOf(O.params.effect) >= 0) {
      if (O.support.transforms3d) {
        O.params.watchSlidesProgress = true;
        O.classNames.push("swiper-container-3d")
      } else {
        O.params.effect = "slide"
      }
    }
    if (O.params.effect !== "slide") {
      O.classNames.push("swiper-container-" + O.params.effect)
    }
    if (O.params.effect === "cube") {
      O.params.resistanceRatio = 0;
      O.params.slidesPerView = 1;
      O.params.slidesPerColumn = 1;
      O.params.slidesPerGroup = 1;
      O.params.centeredSlides = false;
      O.params.spaceBetween = 0;
      O.params.virtualTranslate = true;
      O.params.setWrapperSize = false
    }
    if (O.params.effect === "fade" || O.params.effect === "flip") {
      O.params.slidesPerView = 1;
      O.params.slidesPerColumn = 1;
      O.params.slidesPerGroup = 1;
      O.params.watchSlidesProgress = true;
      O.params.spaceBetween = 0;
      O.params.setWrapperSize = false;
      if (typeof A === "undefined") {
        O.params.virtualTranslate = true
      }
    }
    if (O.params.grabCursor && O.support.touch) {
      O.params.grabCursor = false
    }
    O.wrapper = O.container.children("." + O.params.wrapperClass);
    if (O.params.pagination) {
      O.paginationContainer = a(O.params.pagination);
      if (O.params.uniqueNavElements && typeof O.params.pagination === "string" && O.paginationContainer.length > 1 && O.container.find(O.params.pagination).length === 1) {
        O.paginationContainer = O.container.find(O.params.pagination)
      }
      if (O.params.paginationType === "bullets" && O.params.paginationClickable) {
        O.paginationContainer.addClass("swiper-pagination-clickable")
      } else {
        O.params.paginationClickable = false
      }
      O.paginationContainer.addClass("swiper-pagination-" + O.params.paginationType)
    }
    if (O.params.nextButton || O.params.prevButton) {
      if (O.params.nextButton) {
        O.nextButton = a(O.params.nextButton);
        if (O.params.uniqueNavElements && typeof O.params.nextButton === "string" && O.nextButton.length > 1 && O.container.find(O.params.nextButton).length === 1) {
          O.nextButton = O.container.find(O.params.nextButton)
        }
      }
      if (O.params.prevButton) {
        O.prevButton = a(O.params.prevButton);
        if (O.params.uniqueNavElements && typeof O.params.prevButton === "string" && O.prevButton.length > 1 && O.container.find(O.params.prevButton).length === 1) {
          O.prevButton = O.container.find(O.params.prevButton)
        }
      }
    }
    O.isHorizontal = function () {
      return O.params.direction === "horizontal"
    };
    O.rtl = O.isHorizontal() && (O.container[0].dir.toLowerCase() === "rtl" || O.container.css("direction") === "rtl");
    if (O.rtl) {
      O.classNames.push("swiper-container-rtl")
    }
    if (O.rtl) {
      O.wrongRTL = O.wrapper.css("display") === "-webkit-box"
    }
    if (O.params.slidesPerColumn > 1) {
      O.classNames.push("swiper-container-multirow")
    }
    if (O.device.android) {
      O.classNames.push("swiper-container-android")
    }
    O.container.addClass(O.classNames.join(" "));
    O.translate = 0;
    O.progress = 0;
    O.velocity = 0;
    O.lockSwipeToNext = function () {
      O.params.allowSwipeToNext = false
    };
    O.lockSwipeToPrev = function () {
      O.params.allowSwipeToPrev = false
    };
    O.lockSwipes = function () {
      O.params.allowSwipeToNext = O.params.allowSwipeToPrev = false
    };
    O.unlockSwipeToNext = function () {
      O.params.allowSwipeToNext = true
    };
    O.unlockSwipeToPrev = function () {
      O.params.allowSwipeToPrev = true
    };
    O.unlockSwipes = function () {
      O.params.allowSwipeToNext = O.params.allowSwipeToPrev = true
    };

    function N(p) {
      return Math.floor(p)
    }
    if (O.params.grabCursor) {
      O.container[0].style.cursor = "move";
      O.container[0].style.cursor = "-webkit-grab";
      O.container[0].style.cursor = "-moz-grab";
      O.container[0].style.cursor = "grab"
    }
    O.imagesToLoad = [];
    O.imagesLoaded = 0;
    O.loadImage = function (W, Y, Z, s, p) {
      var V;

      function X() {
        if (p) {
          p()
        }
      }
      if (!W.complete || !s) {
        if (Y) {
          V = new window.Image();
          V.onload = X;
          V.onerror = X;
          if (Z) {
            V.srcset = Z
          }
          if (Y) {
            V.src = Y
          }
        } else {
          X()
        }
      } else {
        X()
      }
    };
    O.preloadImages = function () {
      O.imagesToLoad = O.container.find("img");

      function p() {
        if (typeof O === "undefined" || O === null) {
          return
        }
        if (O.imagesLoaded !== undefined) {
          O.imagesLoaded++
        }
        if (O.imagesLoaded === O.imagesToLoad.length) {
          if (O.params.updateOnImagesReady) {
            O.update()
          }
          O.emit("onImagesReady", O)
        }
      }
      for (var s = 0; s < O.imagesToLoad.length; s++) {
        O.loadImage(O.imagesToLoad[s], (O.imagesToLoad[s].currentSrc || O.imagesToLoad[s].getAttribute("src")), (O.imagesToLoad[s].srcset || O.imagesToLoad[s].getAttribute("srcset")), true, p)
      }
    };
    O.autoplayTimeoutId = undefined;
    O.autoplaying = false;
    O.autoplayPaused = false;

    function k() {
      O.autoplayTimeoutId = setTimeout(function () {
        if (O.params.loop) {
          O.fixLoop();
          O._slideNext();
          O.emit("onAutoplay", O)
        } else {
          if (!O.isEnd) {
            O._slideNext();
            O.emit("onAutoplay", O)
          } else {
            if (!L.autoplayStopOnLast) {
              O._slideTo(0);
              O.emit("onAutoplay", O)
            } else {
              O.stopAutoplay()
            }
          }
        }
      }, O.params.autoplay)
    }
    O.startAutoplay = function () {
      if (typeof O.autoplayTimeoutId !== "undefined") {
        return false
      }
      if (!O.params.autoplay) {
        return false
      }
      if (O.autoplaying) {
        return false
      }
      O.autoplaying = true;
      O.emit("onAutoplayStart", O);
      k()
    };
    O.stopAutoplay = function (p) {
      if (!O.autoplayTimeoutId) {
        return
      }
      if (O.autoplayTimeoutId) {
        clearTimeout(O.autoplayTimeoutId)
      }
      O.autoplaying = false;
      O.autoplayTimeoutId = undefined;
      O.emit("onAutoplayStop", O)
    };
    O.pauseAutoplay = function (p) {
      if (O.autoplayPaused) {
        return
      }
      if (O.autoplayTimeoutId) {
        clearTimeout(O.autoplayTimeoutId)
      }
      O.autoplayPaused = true;
      if (p === 0) {
        O.autoplayPaused = false;
        k()
      } else {
        O.wrapper.transitionEnd(function () {
          if (!O) {
            return
          }
          O.autoplayPaused = false;
          if (!O.autoplaying) {
            O.stopAutoplay()
          } else {
            k()
          }
        })
      }
    };
    O.minTranslate = function () {
      return (-O.snapGrid[0])
    };
    O.maxTranslate = function () {
      return (-O.snapGrid[O.snapGrid.length - 1])
    };
    O.updateAutoHeight = function () {
      var s = O.slides.eq(O.activeIndex)[0];
      if (typeof s !== "undefined") {
        var p = s.offsetHeight;
        if (p) {
          O.wrapper.css("height", p + "px")
        }
      }
    };
    O.updateContainerSize = function () {
      var s, p;
      if (typeof O.params.width !== "undefined") {
        s = O.params.width
      } else {
        s = O.container[0].clientWidth
      }
      if (typeof O.params.height !== "undefined") {
        p = O.params.height
      } else {
        p = O.container[0].clientHeight
      }
      if (s === 0 && O.isHorizontal() || p === 0 && !O.isHorizontal()) {
        return
      }
      s = s - parseInt(O.container.css("padding-left"), 10) - parseInt(O.container.css("padding-right"), 10);
      p = p - parseInt(O.container.css("padding-top"), 10) - parseInt(O.container.css("padding-bottom"), 10);
      O.width = s;
      O.height = p;
      O.size = O.isHorizontal() ? O.width : O.height
    };
    O.updateSlidesSize = function () {
      O.slides = O.wrapper.children("." + O.params.slideClass);
      O.snapGrid = [];
      O.slidesGrid = [];
      O.slidesSizesGrid = [];
      var ah = O.params.spaceBetween,
        ac = -O.params.slidesOffsetBefore,
        s, Z = 0,
        V = 0;
      if (typeof O.size === "undefined") {
        return
      }
      if (typeof ah === "string" && ah.indexOf("%") >= 0) {
        ah = parseFloat(ah.replace("%", "")) / 100 * O.size
      }
      O.virtualSize = -ah;
      if (O.rtl) {
        O.slides.css({
          marginLeft: "",
          marginTop: ""
        })
      } else {
        O.slides.css({
          marginRight: "",
          marginBottom: ""
        })
      }
      var ae;
      if (O.params.slidesPerColumn > 1) {
        if (Math.floor(O.slides.length / O.params.slidesPerColumn) === O.slides.length / O.params.slidesPerColumn) {
          ae = O.slides.length
        } else {
          ae = Math.ceil(O.slides.length / O.params.slidesPerColumn) * O.params.slidesPerColumn
        }
        if (O.params.slidesPerView !== "auto" && O.params.slidesPerColumnFill === "row") {
          ae = Math.max(ae, O.params.slidesPerView * O.params.slidesPerColumn)
        }
      }
      var ad;
      var af = O.params.slidesPerColumn;
      var ag = ae / af;
      var Y = ag - (O.params.slidesPerColumn * ag - O.slides.length);
      for (s = 0; s < O.slides.length; s++) {
        ad = 0;
        var ab = O.slides.eq(s);
        if (O.params.slidesPerColumn > 1) {
          var W;
          var p, aa;
          if (O.params.slidesPerColumnFill === "column") {
            p = Math.floor(s / af);
            aa = s - p * af;
            if (p > Y || (p === Y && aa === af - 1)) {
              if (++aa >= af) {
                aa = 0;
                p++
              }
            }
            W = p + aa * ae / af;
            ab.css({
              "-webkit-box-ordinal-group": W,
              "-moz-box-ordinal-group": W,
              "-ms-flex-order": W,
              "-webkit-order": W,
              order: W
            })
          } else {
            aa = Math.floor(s / ag);
            p = s - aa * ag
          }
          ab.css({
            "margin-top": (aa !== 0 && O.params.spaceBetween) && (O.params.spaceBetween + "px")
          }).attr("data-swiper-column", p).attr("data-swiper-row", aa)
        }
        if (ab.css("display") === "none") {
          continue
        }
        if (O.params.slidesPerView === "auto") {
          ad = O.isHorizontal() ? ab.outerWidth(true) : ab.outerHeight(true);
          if (O.params.roundLengths) {
            ad = N(ad)
          }
        } else {
          ad = (O.size - (O.params.slidesPerView - 1) * ah) / O.params.slidesPerView;
          if (O.params.roundLengths) {
            ad = N(ad)
          }
          if (O.isHorizontal()) {
            O.slides[s].style.width = ad + "px"
          } else {
            O.slides[s].style.height = ad + "px"
          }
        }
        O.slides[s].swiperSlideSize = ad;
        O.slidesSizesGrid.push(ad);
        if (O.params.centeredSlides) {
          ac = ac + ad / 2 + Z / 2 + ah;
          if (s === 0) {
            ac = ac - O.size / 2 - ah
          }
          if (Math.abs(ac) < 1 / 1000) {
            ac = 0
          }
          if ((V) % O.params.slidesPerGroup === 0) {
            O.snapGrid.push(ac)
          }
          O.slidesGrid.push(ac)
        } else {
          if ((V) % O.params.slidesPerGroup === 0) {
            O.snapGrid.push(ac)
          }
          O.slidesGrid.push(ac);
          ac = ac + ad + ah
        }
        O.virtualSize += ad + ah;
        Z = ad;
        V++
      }
      O.virtualSize = Math.max(O.virtualSize, O.size) + O.params.slidesOffsetAfter;
      var X;
      if (O.rtl && O.wrongRTL && (O.params.effect === "slide" || O.params.effect === "coverflow")) {
        O.wrapper.css({
          width: O.virtualSize + O.params.spaceBetween + "px"
        })
      }
      if (!O.support.flexbox || O.params.setWrapperSize) {
        if (O.isHorizontal()) {
          O.wrapper.css({
            width: O.virtualSize + O.params.spaceBetween + "px"
          })
        } else {
          O.wrapper.css({
            height: O.virtualSize + O.params.spaceBetween + "px"
          })
        }
      }
      if (O.params.slidesPerColumn > 1) {
        O.virtualSize = (ad + O.params.spaceBetween) * ae;
        O.virtualSize = Math.ceil(O.virtualSize / O.params.slidesPerColumn) - O.params.spaceBetween;
        O.wrapper.css({
          width: O.virtualSize + O.params.spaceBetween + "px"
        });
        if (O.params.centeredSlides) {
          X = [];
          for (s = 0; s < O.snapGrid.length; s++) {
            if (O.snapGrid[s] < O.virtualSize + O.snapGrid[0]) {
              X.push(O.snapGrid[s])
            }
          }
          O.snapGrid = X
        }
      }
      if (!O.params.centeredSlides) {
        X = [];
        for (s = 0; s < O.snapGrid.length; s++) {
          if (O.snapGrid[s] <= O.virtualSize - O.size) {
            X.push(O.snapGrid[s])
          }
        }
        O.snapGrid = X;
        if (Math.floor(O.virtualSize - O.size) - Math.floor(O.snapGrid[O.snapGrid.length - 1]) > 1) {
          O.snapGrid.push(O.virtualSize - O.size)
        }
      }
      if (O.snapGrid.length === 0) {
        O.snapGrid = [0]
      }
      if (O.params.spaceBetween !== 0) {
        if (O.isHorizontal()) {
          if (O.rtl) {
            O.slides.css({
              marginLeft: ah + "px"
            })
          } else {
            O.slides.css({
              marginRight: ah + "px"
            })
          }
        } else {
          O.slides.css({
            marginBottom: ah + "px"
          })
        }
      }
      if (O.params.watchSlidesProgress) {
        O.updateSlidesOffset()
      }
    };
    O.updateSlidesOffset = function () {
      for (var p = 0; p < O.slides.length; p++) {
        O.slides[p].swiperSlideOffset = O.isHorizontal() ? O.slides[p].offsetLeft : O.slides[p].offsetTop
      }
    };
    O.updateSlidesProgress = function (aa) {
      if (typeof aa === "undefined") {
        aa = O.translate || 0
      }
      if (O.slides.length === 0) {
        return
      }
      if (typeof O.slides[0].swiperSlideOffset === "undefined") {
        O.updateSlidesOffset()
      }
      var V = -aa;
      if (O.rtl) {
        V = aa
      }
      O.slides.removeClass(O.params.slideVisibleClass);
      for (var p = 0; p < O.slides.length; p++) {
        var W = O.slides[p];
        var Z = (V - W.swiperSlideOffset) / (W.swiperSlideSize + O.params.spaceBetween);
        if (O.params.watchSlidesVisibility) {
          var Y = -(V - W.swiperSlideOffset);
          var X = Y + O.slidesSizesGrid[p];
          var s = (Y >= 0 && Y < O.size) || (X > 0 && X <= O.size) || (Y <= 0 && X >= O.size);
          if (s) {
            O.slides.eq(p).addClass(O.params.slideVisibleClass)
          }
        }
        W.progress = O.rtl ? -Z : Z
      }
    };
    O.updateProgress = function (p) {
      if (typeof p === "undefined") {
        p = O.translate || 0
      }
      var s = O.maxTranslate() - O.minTranslate();
      var V = O.isBeginning;
      var W = O.isEnd;
      if (s === 0) {
        O.progress = 0;
        O.isBeginning = O.isEnd = true
      } else {
        O.progress = (p - O.minTranslate()) / (s);
        O.isBeginning = O.progress <= 0;
        O.isEnd = O.progress >= 1
      }
      if (O.isBeginning && !V) {
        O.emit("onReachBeginning", O)
      }
      if (O.isEnd && !W) {
        O.emit("onReachEnd", O)
      }
      if (O.params.watchSlidesProgress) {
        O.updateSlidesProgress(p)
      }
      O.emit("onProgress", O, O.progress)
    };
    O.updateActiveIndex = function () {
      var W = O.rtl ? O.translate : -O.translate;
      var s, p, V;
      for (p = 0; p < O.slidesGrid.length; p++) {
        if (typeof O.slidesGrid[p + 1] !== "undefined") {
          if (W >= O.slidesGrid[p] && W < O.slidesGrid[p + 1] - (O.slidesGrid[p + 1] - O.slidesGrid[p]) / 2) {
            s = p
          } else {
            if (W >= O.slidesGrid[p] && W < O.slidesGrid[p + 1]) {
              s = p + 1
            }
          }
        } else {
          if (W >= O.slidesGrid[p]) {
            s = p
          }
        }
      }
      if (s < 0 || typeof s === "undefined") {
        s = 0
      }
      V = Math.floor(s / O.params.slidesPerGroup);
      if (V >= O.snapGrid.length) {
        V = O.snapGrid.length - 1
      }
      if (s === O.activeIndex) {
        return
      }
      O.snapIndex = V;
      O.previousIndex = O.activeIndex;
      O.activeIndex = s;
      O.updateClasses()
    };
    O.updateClasses = function () {
      O.slides.removeClass(O.params.slideActiveClass + " " + O.params.slideNextClass + " " + O.params.slidePrevClass);
      var p = O.slides.eq(O.activeIndex);
      p.addClass(O.params.slideActiveClass);
      var V = p.next("." + O.params.slideClass).addClass(O.params.slideNextClass);
      if (O.params.loop && V.length === 0) {
        O.slides.eq(0).addClass(O.params.slideNextClass)
      }
      var W = p.prev("." + O.params.slideClass).addClass(O.params.slidePrevClass);
      if (O.params.loop && W.length === 0) {
        O.slides.eq(-1).addClass(O.params.slidePrevClass)
      }
      if (O.paginationContainer && O.paginationContainer.length > 0) {
        var s, aa = O.params.loop ? Math.ceil((O.slides.length - O.loopedSlides * 2) / O.params.slidesPerGroup) : O.snapGrid.length;
        if (O.params.loop) {
          s = Math.ceil((O.activeIndex - O.loopedSlides) / O.params.slidesPerGroup);
          if (s > O.slides.length - 1 - O.loopedSlides * 2) {
            s = s - (O.slides.length - O.loopedSlides * 2)
          }
          if (s > aa - 1) {
            s = s - aa
          }
          if (s < 0 && O.params.paginationType !== "bullets") {
            s = aa + s
          }
        } else {
          if (typeof O.snapIndex !== "undefined") {
            s = O.snapIndex
          } else {
            s = O.activeIndex || 0
          }
        }
        if (O.params.paginationType === "bullets" && O.bullets && O.bullets.length > 0) {
          O.bullets.removeClass(O.params.bulletActiveClass);
          if (O.paginationContainer.length > 1) {
            O.bullets.each(function () {
              if (a(this).index() === s) {
                a(this).addClass(O.params.bulletActiveClass)
              }
            })
          } else {
            O.bullets.eq(s).addClass(O.params.bulletActiveClass)
          }
        }
        if (O.params.paginationType === "fraction") {
          O.paginationContainer.find("." + O.params.paginationCurrentClass).text(s + 1);
          O.paginationContainer.find("." + O.params.paginationTotalClass).text(aa)
        }
        if (O.params.paginationType === "progress") {
          var X = (s + 1) / aa,
            Y = X,
            Z = 1;
          if (!O.isHorizontal()) {
            Z = X;
            Y = 1
          }
          O.paginationContainer.find("." + O.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX(" + Y + ") scaleY(" + Z + ")").transition(O.params.speed)
        }
        if (O.params.paginationType === "custom" && O.params.paginationCustomRender) {
          O.paginationContainer.html(O.params.paginationCustomRender(O, s + 1, aa));
          O.emit("onPaginationRendered", O, O.paginationContainer[0])
        }
      }
      if (!O.params.loop) {
        if (O.params.prevButton && O.prevButton && O.prevButton.length > 0) {
          if (O.isBeginning) {
            O.prevButton.addClass(O.params.buttonDisabledClass);
            if (O.params.a11y && O.a11y) {
              O.a11y.disable(O.prevButton)
            }
          } else {
            O.prevButton.removeClass(O.params.buttonDisabledClass);
            if (O.params.a11y && O.a11y) {
              O.a11y.enable(O.prevButton)
            }
          }
        }
        if (O.params.nextButton && O.nextButton && O.nextButton.length > 0) {
          if (O.isEnd) {
            O.nextButton.addClass(O.params.buttonDisabledClass);
            if (O.params.a11y && O.a11y) {
              O.a11y.disable(O.nextButton)
            }
          } else {
            O.nextButton.removeClass(O.params.buttonDisabledClass);
            if (O.params.a11y && O.a11y) {
              O.a11y.enable(O.nextButton)
            }
          }
        }
      }
    };
    O.updatePagination = function () {
      if (!O.params.pagination) {
        return
      }
      if (O.paginationContainer && O.paginationContainer.length > 0) {
        var V = "";
        if (O.params.paginationType === "bullets") {
          var s = O.params.loop ? Math.ceil((O.slides.length - O.loopedSlides * 2) / O.params.slidesPerGroup) : O.snapGrid.length;
          for (var p = 0; p < s; p++) {
            if (O.params.paginationBulletRender) {
              V += O.params.paginationBulletRender(p, O.params.bulletClass)
            } else {
              V += "<" + O.params.paginationElement + ' class="' + O.params.bulletClass + '"></' + O.params.paginationElement + ">"
            }
          }
          O.paginationContainer.html(V);
          O.bullets = O.paginationContainer.find("." + O.params.bulletClass);
          if (O.params.paginationClickable && O.params.a11y && O.a11y) {
            O.a11y.initPagination()
          }
        }
        if (O.params.paginationType === "fraction") {
          if (O.params.paginationFractionRender) {
            V = O.params.paginationFractionRender(O, O.params.paginationCurrentClass, O.params.paginationTotalClass)
          } else {
            V = '<span class="' + O.params.paginationCurrentClass + '"></span> / <span class="' + O.params.paginationTotalClass + '"></span>'
          }
          O.paginationContainer.html(V)
        }
        if (O.params.paginationType === "progress") {
          if (O.params.paginationProgressRender) {
            V = O.params.paginationProgressRender(O, O.params.paginationProgressbarClass)
          } else {
            V = '<span class="' + O.params.paginationProgressbarClass + '"></span>'
          }
          O.paginationContainer.html(V)
        }
        if (O.params.paginationType !== "custom") {
          O.emit("onPaginationRendered", O, O.paginationContainer[0])
        }
      }
    };
    O.update = function (W) {
      O.updateContainerSize();
      O.updateSlidesSize();
      O.updateProgress();
      O.updatePagination();
      O.updateClasses();
      if (O.params.scrollbar && O.scrollbar) {
        O.scrollbar.set()
      }

      function p() {
        s = Math.min(Math.max(O.translate, O.maxTranslate()), O.minTranslate());
        O.setWrapperTranslate(s);
        O.updateActiveIndex();
        O.updateClasses()
      }
      if (W) {
        var V, s;
        if (O.controller && O.controller.spline) {
          O.controller.spline = undefined
        }
        if (O.params.freeMode) {
          p();
          if (O.params.autoHeight) {
            O.updateAutoHeight()
          }
        } else {
          if ((O.params.slidesPerView === "auto" || O.params.slidesPerView > 1) && O.isEnd && !O.params.centeredSlides) {
            V = O.slideTo(O.slides.length - 1, 0, false, true)
          } else {
            V = O.slideTo(O.activeIndex, 0, false, true)
          }
          if (!V) {
            p()
          }
        }
      } else {
        if (O.params.autoHeight) {
          O.updateAutoHeight()
        }
      }
    };
    O.onResize = function (V) {
      if (O.params.breakpoints) {
        O.setBreakpoint()
      }
      var s = O.params.allowSwipeToPrev;
      var p = O.params.allowSwipeToNext;
      O.params.allowSwipeToPrev = O.params.allowSwipeToNext = true;
      O.updateContainerSize();
      O.updateSlidesSize();
      if (O.params.slidesPerView === "auto" || O.params.freeMode || V) {
        O.updatePagination()
      }
      if (O.params.scrollbar && O.scrollbar) {
        O.scrollbar.set()
      }
      if (O.controller && O.controller.spline) {
        O.controller.spline = undefined
      }
      var X = false;
      if (O.params.freeMode) {
        var W = Math.min(Math.max(O.translate, O.maxTranslate()), O.minTranslate());
        O.setWrapperTranslate(W);
        O.updateActiveIndex();
        O.updateClasses();
        if (O.params.autoHeight) {
          O.updateAutoHeight()
        }
      } else {
        O.updateClasses();
        if ((O.params.slidesPerView === "auto" || O.params.slidesPerView > 1) && O.isEnd && !O.params.centeredSlides) {
          X = O.slideTo(O.slides.length - 1, 0, false, true)
        } else {
          X = O.slideTo(O.activeIndex, 0, false, true)
        }
      }
      if (O.params.lazyLoading && !X && O.lazy) {
        O.lazy.load()
      }
      O.params.allowSwipeToPrev = s;
      O.params.allowSwipeToNext = p
    };
    var u = ["mousedown", "mousemove", "mouseup"];
    if (window.navigator.pointerEnabled) {
      u = ["pointerdown", "pointermove", "pointerup"]
    } else {
      if (window.navigator.msPointerEnabled) {
        u = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]
      }
    }
    O.touchEvents = {
      start: O.support.touch || !O.params.simulateTouch ? "touchstart" : u[0],
      move: O.support.touch || !O.params.simulateTouch ? "touchmove" : u[1],
      end: O.support.touch || !O.params.simulateTouch ? "touchend" : u[2]
    };
    if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {
      (O.params.touchEventsTarget === "container" ? O.container : O.wrapper).addClass("swiper-wp8-" + O.params.direction)
    }
    O.initEvents = function (V) {
      var s = V ? "off" : "on";
      var p = V ? "removeEventListener" : "addEventListener";
      var Y = O.params.touchEventsTarget === "container" ? O.container[0] : O.wrapper[0];
      var X = O.support.touch ? Y : document;
      var W = O.params.nested ? true : false;
      if (O.browser.ie) {
        Y[p](O.touchEvents.start, O.onTouchStart, false);
        X[p](O.touchEvents.move, O.onTouchMove, W);
        X[p](O.touchEvents.end, O.onTouchEnd, false)
      } else {
        if (O.support.touch) {
          Y[p](O.touchEvents.start, O.onTouchStart, false);
          Y[p](O.touchEvents.move, O.onTouchMove, W);
          Y[p](O.touchEvents.end, O.onTouchEnd, false)
        }
        if (L.simulateTouch && !O.device.ios && !O.device.android) {
          Y[p]("mousedown", O.onTouchStart, false);
          document[p]("mousemove", O.onTouchMove, W);
          document[p]("mouseup", O.onTouchEnd, false)
        }
      }
      window[p]("resize", O.onResize);
      if (O.params.nextButton && O.nextButton && O.nextButton.length > 0) {
        O.nextButton[s]("click", O.onClickNext);
        if (O.params.a11y && O.a11y) {
          O.nextButton[s]("keydown", O.a11y.onEnterKey)
        }
      }
      if (O.params.prevButton && O.prevButton && O.prevButton.length > 0) {
        O.prevButton[s]("click", O.onClickPrev);
        if (O.params.a11y && O.a11y) {
          O.prevButton[s]("keydown", O.a11y.onEnterKey)
        }
      }
      if (O.params.pagination && O.params.paginationClickable) {
        O.paginationContainer[s]("click", "." + O.params.bulletClass, O.onClickIndex);
        if (O.params.a11y && O.a11y) {
          O.paginationContainer[s]("keydown", "." + O.params.bulletClass, O.a11y.onEnterKey)
        }
      }
      if (O.params.preventClicks || O.params.preventClicksPropagation) {
        Y[p]("click", O.preventClicks, true)
      }
    };
    O.attachEvents = function () {
      O.initEvents()
    };
    O.detachEvents = function () {
      O.initEvents(true)
    };
    O.allowClick = true;
    O.preventClicks = function (p) {
      if (!O.allowClick) {
        if (O.params.preventClicks) {
          p.preventDefault()
        }
        if (O.params.preventClicksPropagation && O.animating) {
          p.stopPropagation();
          p.stopImmediatePropagation()
        }
      }
    };
    O.onClickNext = function (p) {
      p.preventDefault();
      if (O.isEnd && !O.params.loop) {
        return
      }
      O.slideNext()
    };
    O.onClickPrev = function (p) {
      p.preventDefault();
      if (O.isBeginning && !O.params.loop) {
        return
      }
      O.slidePrev()
    };
    O.onClickIndex = function (p) {
      p.preventDefault();
      var s = a(this).index() * O.params.slidesPerGroup;
      if (O.params.loop) {
        s = s + O.loopedSlides
      }
      O.slideTo(s)
    };

    function w(p, W) {
      var s = a(p.target);
      if (!s.is(W)) {
        if (typeof W === "string") {
          s = s.parents(W)
        } else {
          if (W.nodeType) {
            var V;
            s.parents().each(function (Y, X) {
              if (X === W) {
                V = W
              }
            });
            if (!V) {
              return undefined
            } else {
              return W
            }
          }
        }
      }
      if (s.length === 0) {
        return undefined
      }
      return s[0]
    }
    O.updateClickedSlide = function (s) {
      var X = w(s, "." + O.params.slideClass);
      var Y = false;
      if (X) {
        for (var V = 0; V < O.slides.length; V++) {
          if (O.slides[V] === X) {
            Y = true
          }
        }
      }
      if (X && Y) {
        O.clickedSlide = X;
        O.clickedIndex = a(X).index()
      } else {
        O.clickedSlide = undefined;
        O.clickedIndex = undefined;
        return
      }
      if (O.params.slideToClickedSlide && O.clickedIndex !== undefined && O.clickedIndex !== O.activeIndex) {
        var Z = O.clickedIndex,
          W, p;
        if (O.params.loop) {
          if (O.animating) {
            return
          }
          W = a(O.clickedSlide).attr("data-swiper-slide-index");
          if (O.params.centeredSlides) {
            if ((Z < O.loopedSlides - O.params.slidesPerView / 2) || (Z > O.slides.length - O.loopedSlides + O.params.slidesPerView / 2)) {
              O.fixLoop();
              Z = O.wrapper.children("." + O.params.slideClass + '[data-swiper-slide-index="' + W + '"]:not(.swiper-slide-duplicate)').eq(0).index();
              setTimeout(function () {
                O.slideTo(Z)
              }, 0)
            } else {
              O.slideTo(Z)
            }
          } else {
            if (Z > O.slides.length - O.params.slidesPerView) {
              O.fixLoop();
              Z = O.wrapper.children("." + O.params.slideClass + '[data-swiper-slide-index="' + W + '"]:not(.swiper-slide-duplicate)').eq(0).index();
              setTimeout(function () {
                O.slideTo(Z)
              }, 0)
            } else {
              O.slideTo(Z)
            }
          }
        } else {
          O.slideTo(Z)
        }
      }
    };
    var E, C, j, T, D, n, R, i, x = "input, select, textarea, button",
      G = Date.now(),
      l, U = [],
      h;
    O.animating = false;
    O.touches = {
      startX: 0,
      startY: 0,
      currentX: 0,
      currentY: 0,
      diff: 0
    };
    var F, Q;
    O.onTouchStart = function (p) {
      if (p.originalEvent) {
        p = p.originalEvent
      }
      F = p.type === "touchstart";
      if (!F && "which" in p && p.which === 3) {
        return
      }
      if (O.params.noSwiping && w(p, "." + O.params.noSwipingClass)) {
        O.allowClick = true;
        return
      }
      if (O.params.swipeHandler) {
        if (!w(p, O.params.swipeHandler)) {
          return
        }
      }
      var V = O.touches.currentX = p.type === "touchstart" ? p.targetTouches[0].pageX : p.pageX;
      var W = O.touches.currentY = p.type === "touchstart" ? p.targetTouches[0].pageY : p.pageY;
      if (O.device.ios && O.params.iOSEdgeSwipeDetection && V <= O.params.iOSEdgeSwipeThreshold) {
        return
      }
      E = true;
      C = false;
      j = true;
      D = undefined;
      Q = undefined;
      O.touches.startX = V;
      O.touches.startY = W;
      T = Date.now();
      O.allowClick = true;
      O.updateContainerSize();
      O.swipeDirection = undefined;
      if (O.params.threshold > 0) {
        i = false
      }
      if (p.type !== "touchstart") {
        var s = true;
        if (a(p.target).is(x)) {
          s = false
        }
        if (document.activeElement && a(document.activeElement).is(x)) {
          document.activeElement.blur()
        }
        if (s) {
          p.preventDefault()
        }
      }
      O.emit("onTouchStart", O, p)
    };
    O.onTouchMove = function (V) {
      if (V.originalEvent) {
        V = V.originalEvent
      }
      if (F && V.type === "mousemove") {
        return
      }
      if (V.preventedByNestedSwiper) {
        O.touches.startX = V.type === "touchmove" ? V.targetTouches[0].pageX : V.pageX;
        O.touches.startY = V.type === "touchmove" ? V.targetTouches[0].pageY : V.pageY;
        return
      }
      if (O.params.onlyExternal) {
        O.allowClick = false;
        if (E) {
          O.touches.startX = O.touches.currentX = V.type === "touchmove" ? V.targetTouches[0].pageX : V.pageX;
          O.touches.startY = O.touches.currentY = V.type === "touchmove" ? V.targetTouches[0].pageY : V.pageY;
          T = Date.now()
        }
        return
      }
      if (F && document.activeElement) {
        if (V.target === document.activeElement && a(V.target).is(x)) {
          C = true;
          O.allowClick = false;
          return
        }
      }
      if (j) {
        O.emit("onTouchMove", O, V)
      }
      if (V.targetTouches && V.targetTouches.length > 1) {
        return
      }
      O.touches.currentX = V.type === "touchmove" ? V.targetTouches[0].pageX : V.pageX;
      O.touches.currentY = V.type === "touchmove" ? V.targetTouches[0].pageY : V.pageY;
      if (typeof D === "undefined") {
        var W = Math.atan2(Math.abs(O.touches.currentY - O.touches.startY), Math.abs(O.touches.currentX - O.touches.startX)) * 180 / Math.PI;
        D = O.isHorizontal() ? W > O.params.touchAngle : (90 - W > O.params.touchAngle)
      }
      if (D) {
        O.emit("onTouchMoveOpposite", O, V)
      }
      if (typeof Q === "undefined" && O.browser.ieTouch) {
        if (O.touches.currentX !== O.touches.startX || O.touches.currentY !== O.touches.startY) {
          Q = true
        }
      }
      if (!E) {
        return
      }
      if (D) {
        E = false;
        return
      }
      if (!Q && O.browser.ieTouch) {
        return
      }
      O.allowClick = false;
      O.emit("onSliderMove", O, V);
      V.preventDefault();
      if (O.params.touchMoveStopPropagation && !O.params.nested) {
        V.stopPropagation()
      }
      if (!C) {
        if (L.loop) {
          O.fixLoop()
        }
        R = O.getWrapperTranslate();
        O.setWrapperTransition(0);
        if (O.animating) {
          O.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd")
        }
        if (O.params.autoplay && O.autoplaying) {
          if (O.params.autoplayDisableOnInteraction) {
            O.stopAutoplay()
          } else {
            O.pauseAutoplay()
          }
        }
        h = false;
        if (O.params.grabCursor) {
          O.container[0].style.cursor = "move";
          O.container[0].style.cursor = "-webkit-grabbing";
          O.container[0].style.cursor = "-moz-grabbin";
          O.container[0].style.cursor = "grabbing"
        }
      }
      C = true;
      var p = O.touches.diff = O.isHorizontal() ? O.touches.currentX - O.touches.startX : O.touches.currentY - O.touches.startY;
      p = p * O.params.touchRatio;
      if (O.rtl) {
        p = -p
      }
      O.swipeDirection = p > 0 ? "prev" : "next";
      n = p + R;
      var s = true;
      if ((p > 0 && n > O.minTranslate())) {
        s = false;
        if (O.params.resistance) {
          n = O.minTranslate() - 1 + Math.pow(-O.minTranslate() + R + p, O.params.resistanceRatio)
        }
      } else {
        if (p < 0 && n < O.maxTranslate()) {
          s = false;
          if (O.params.resistance) {
            n = O.maxTranslate() + 1 - Math.pow(O.maxTranslate() - R - p, O.params.resistanceRatio)
          }
        }
      }
      if (s) {
        V.preventedByNestedSwiper = true
      }
      if (!O.params.allowSwipeToNext && O.swipeDirection === "next" && n < R) {
        n = R
      }
      if (!O.params.allowSwipeToPrev && O.swipeDirection === "prev" && n > R) {
        n = R
      }
      if (!O.params.followFinger) {
        return
      }
      if (O.params.threshold > 0) {
        if (Math.abs(p) > O.params.threshold || i) {
          if (!i) {
            i = true;
            O.touches.startX = O.touches.currentX;
            O.touches.startY = O.touches.currentY;
            n = R;
            O.touches.diff = O.isHorizontal() ? O.touches.currentX - O.touches.startX : O.touches.currentY - O.touches.startY;
            return
          }
        } else {
          n = R;
          return
        }
      }
      if (O.params.freeMode || O.params.watchSlidesProgress) {
        O.updateActiveIndex()
      }
      if (O.params.freeMode) {
        if (U.length === 0) {
          U.push({
            position: O.touches[O.isHorizontal() ? "startX" : "startY"],
            time: T
          })
        }
        U.push({
          position: O.touches[O.isHorizontal() ? "currentX" : "currentY"],
          time: (new window.Date()).getTime()
        })
      }
      O.updateProgress(n);
      O.setWrapperTranslate(n)
    };
    O.onTouchEnd = function (Y) {
      if (Y.originalEvent) {
        Y = Y.originalEvent
      }
      if (j) {
        O.emit("onTouchEnd", O, Y)
      }
      j = false;
      if (!E) {
        return
      }
      if (O.params.grabCursor && C && E) {
        O.container[0].style.cursor = "move";
        O.container[0].style.cursor = "-webkit-grab";
        O.container[0].style.cursor = "-moz-grab";
        O.container[0].style.cursor = "grab"
      }
      var al = Date.now();
      var ak = al - T;
      if (O.allowClick) {
        O.updateClickedSlide(Y);
        O.emit("onTap", O, Y);
        if (ak < 300 && (al - G) > 300) {
          if (l) {
            clearTimeout(l)
          }
          l = setTimeout(function () {
            if (!O) {
              return
            }
            if (O.params.paginationHide && O.paginationContainer.length > 0 && !a(Y.target).hasClass(O.params.bulletClass)) {
              O.paginationContainer.toggleClass(O.params.paginationHiddenClass)
            }
            O.emit("onClick", O, Y)
          }, 300)
        }
        if (ak < 300 && (al - G) < 300) {
          if (l) {
            clearTimeout(l)
          }
          O.emit("onDoubleTap", O, Y)
        }
      }
      G = Date.now();
      setTimeout(function () {
        if (O) {
          O.allowClick = true
        }
      }, 0);
      if (!E || !C || !O.swipeDirection || O.touches.diff === 0 || n === R) {
        E = C = false;
        return
      }
      E = C = false;
      var V;
      if (O.params.followFinger) {
        V = O.rtl ? O.translate : -O.translate
      } else {
        V = -n
      }
      if (O.params.freeMode) {
        if (V < -O.minTranslate()) {
          O.slideTo(O.activeIndex);
          return
        } else {
          if (V > -O.maxTranslate()) {
            if (O.slides.length < O.snapGrid.length) {
              O.slideTo(O.snapGrid.length - 1)
            } else {
              O.slideTo(O.slides.length - 1)
            }
            return
          }
        }
        if (O.params.freeModeMomentum) {
          if (U.length > 1) {
            var ac = U.pop(),
              am = U.pop();
            var W = ac.position - am.position;
            var aj = ac.time - am.time;
            O.velocity = W / aj;
            O.velocity = O.velocity / 2;
            if (Math.abs(O.velocity) < O.params.freeModeMinimumVelocity) {
              O.velocity = 0
            }
            if (aj > 150 || (new window.Date().getTime() - ac.time) > 300) {
              O.velocity = 0
            }
          } else {
            O.velocity = 0
          }
          U.length = 0;
          var ae = 1000 * O.params.freeModeMomentumRatio;
          var ad = O.velocity * ae;
          var af = O.translate + ad;
          if (O.rtl) {
            af = -af
          }
          var X = false;
          var p;
          var s = Math.abs(O.velocity) * 20 * O.params.freeModeMomentumBounceRatio;
          if (af < O.maxTranslate()) {
            if (O.params.freeModeMomentumBounce) {
              if (af + O.maxTranslate() < -s) {
                af = O.maxTranslate() - s
              }
              p = O.maxTranslate();
              X = true;
              h = true
            } else {
              af = O.maxTranslate()
            }
          } else {
            if (af > O.minTranslate()) {
              if (O.params.freeModeMomentumBounce) {
                if (af - O.minTranslate() > s) {
                  af = O.minTranslate() + s
                }
                p = O.minTranslate();
                X = true;
                h = true
              } else {
                af = O.minTranslate()
              }
            } else {
              if (O.params.freeModeSticky) {
                var ab = 0,
                  ag;
                for (ab = 0; ab < O.snapGrid.length; ab += 1) {
                  if (O.snapGrid[ab] > -af) {
                    ag = ab;
                    break
                  }
                }
                if (Math.abs(O.snapGrid[ag] - af) < Math.abs(O.snapGrid[ag - 1] - af) || O.swipeDirection === "next") {
                  af = O.snapGrid[ag]
                } else {
                  af = O.snapGrid[ag - 1]
                }
                if (!O.rtl) {
                  af = -af
                }
              }
            }
          }
          if (O.velocity !== 0) {
            if (O.rtl) {
              ae = Math.abs((-af - O.translate) / O.velocity)
            } else {
              ae = Math.abs((af - O.translate) / O.velocity)
            }
          } else {
            if (O.params.freeModeSticky) {
              O.slideReset();
              return
            }
          }
          if (O.params.freeModeMomentumBounce && X) {
            O.updateProgress(p);
            O.setWrapperTransition(ae);
            O.setWrapperTranslate(af);
            O.onTransitionStart();
            O.animating = true;
            O.wrapper.transitionEnd(function () {
              if (!O || !h) {
                return
              }
              O.emit("onMomentumBounce", O);
              O.setWrapperTransition(O.params.speed);
              O.setWrapperTranslate(p);
              O.wrapper.transitionEnd(function () {
                if (!O) {
                  return
                }
                O.onTransitionEnd()
              })
            })
          } else {
            if (O.velocity) {
              O.updateProgress(af);
              O.setWrapperTransition(ae);
              O.setWrapperTranslate(af);
              O.onTransitionStart();
              if (!O.animating) {
                O.animating = true;
                O.wrapper.transitionEnd(function () {
                  if (!O) {
                    return
                  }
                  O.onTransitionEnd()
                })
              }
            } else {
              O.updateProgress(af)
            }
          }
          O.updateActiveIndex()
        }
        if (!O.params.freeModeMomentum || ak >= O.params.longSwipesMs) {
          O.updateProgress();
          O.updateActiveIndex()
        }
        return
      }
      var aa, ai = 0,
        Z = O.slidesSizesGrid[0];
      for (aa = 0; aa < O.slidesGrid.length; aa += O.params.slidesPerGroup) {
        if (typeof O.slidesGrid[aa + O.params.slidesPerGroup] !== "undefined") {
          if (V >= O.slidesGrid[aa] && V < O.slidesGrid[aa + O.params.slidesPerGroup]) {
            ai = aa;
            Z = O.slidesGrid[aa + O.params.slidesPerGroup] - O.slidesGrid[aa]
          }
        } else {
          if (V >= O.slidesGrid[aa]) {
            ai = aa;
            Z = O.slidesGrid[O.slidesGrid.length - 1] - O.slidesGrid[O.slidesGrid.length - 2]
          }
        }
      }
      var ah = (V - O.slidesGrid[ai]) / Z;
      if (ak > O.params.longSwipesMs) {
        if (!O.params.longSwipes) {
          O.slideTo(O.activeIndex);
          return
        }
        if (O.swipeDirection === "next") {
          if (ah >= O.params.longSwipesRatio) {
            O.slideTo(ai + O.params.slidesPerGroup)
          } else {
            O.slideTo(ai)
          }
        }
        if (O.swipeDirection === "prev") {
          if (ah > (1 - O.params.longSwipesRatio)) {
            O.slideTo(ai + O.params.slidesPerGroup)
          } else {
            O.slideTo(ai)
          }
        }
      } else {
        if (!O.params.shortSwipes) {
          O.slideTo(O.activeIndex);
          return
        }
        if (O.swipeDirection === "next") {
          O.slideTo(ai + O.params.slidesPerGroup)
        }
        if (O.swipeDirection === "prev") {
          O.slideTo(ai)
        }
      }
    };
    O._slideTo = function (p, s) {
      return O.slideTo(p, s, true, true)
    };
    O.slideTo = function (W, X, V, s) {
      if (typeof V === "undefined") {
        V = true
      }
      if (typeof W === "undefined") {
        W = 0
      }
      if (W < 0) {
        W = 0
      }
      O.snapIndex = Math.floor(W / O.params.slidesPerGroup);
      if (O.snapIndex >= O.snapGrid.length) {
        O.snapIndex = O.snapGrid.length - 1
      }
      var Y = -O.snapGrid[O.snapIndex];
      if (O.params.autoplay && O.autoplaying) {
        if (s || !O.params.autoplayDisableOnInteraction) {
          O.pauseAutoplay(X)
        } else {
          O.stopAutoplay()
        }
      }
      O.updateProgress(Y);
      for (var p = 0; p < O.slidesGrid.length; p++) {
        if (-Math.floor(Y * 100) >= Math.floor(O.slidesGrid[p] * 100)) {
          W = p
        }
      }
      if (!O.params.allowSwipeToNext && Y < O.translate && Y < O.minTranslate()) {
        return false
      }
      if (!O.params.allowSwipeToPrev && Y > O.translate && Y > O.maxTranslate()) {
        if ((O.activeIndex || 0) !== W) {
          return false
        }
      }
      if (typeof X === "undefined") {
        X = O.params.speed
      }
      O.previousIndex = O.activeIndex || 0;
      O.activeIndex = W;
      if ((O.rtl && -Y === O.translate) || (!O.rtl && Y === O.translate)) {
        if (O.params.autoHeight) {
          O.updateAutoHeight()
        }
        O.updateClasses();
        if (O.params.effect !== "slide") {
          O.setWrapperTranslate(Y)
        }
        return false
      }
      O.updateClasses();
      O.onTransitionStart(V);
      if (X === 0) {
        O.setWrapperTranslate(Y);
        O.setWrapperTransition(0);
        O.onTransitionEnd(V)
      } else {
        O.setWrapperTranslate(Y);
        O.setWrapperTransition(X);
        if (!O.animating) {
          O.animating = true;
          O.wrapper.transitionEnd(function () {
            if (!O) {
              return
            }
            O.onTransitionEnd(V)
          })
        }
      }
      return true
    };
    O.onTransitionStart = function (p) {
      if (typeof p === "undefined") {
        p = true
      }
      if (O.params.autoHeight) {
        O.updateAutoHeight()
      }
      if (O.lazy) {
        O.lazy.onTransitionStart()
      }
      if (p) {
        O.emit("onTransitionStart", O);
        if (O.activeIndex !== O.previousIndex) {
          O.emit("onSlideChangeStart", O);
          if (O.activeIndex > O.previousIndex) {
            O.emit("onSlideNextStart", O)
          } else {
            O.emit("onSlidePrevStart", O)
          }
        }
      }
    };
    O.onTransitionEnd = function (p) {
      O.animating = false;
      O.setWrapperTransition(0);
      if (typeof p === "undefined") {
        p = true
      }
      if (O.lazy) {
        O.lazy.onTransitionEnd()
      }
      if (p) {
        O.emit("onTransitionEnd", O);
        if (O.activeIndex !== O.previousIndex) {
          O.emit("onSlideChangeEnd", O);
          if (O.activeIndex > O.previousIndex) {
            O.emit("onSlideNextEnd", O)
          } else {
            O.emit("onSlidePrevEnd", O)
          }
        }
      }
      if (O.params.hashnav && O.hashnav) {
        O.hashnav.setHash()
      }
    };
    O.slideNext = function (V, W, s) {
      if (O.params.loop) {
        if (O.animating) {
          return false
        }
        O.fixLoop();
        var p = O.container[0].clientLeft;
        return O.slideTo(O.activeIndex + O.params.slidesPerGroup, W, V, s)
      } else {
        return O.slideTo(O.activeIndex + O.params.slidesPerGroup, W, V, s)
      }
    };
    O._slideNext = function (p) {
      return O.slideNext(true, p, true)
    };
    O.slidePrev = function (V, W, s) {
      if (O.params.loop) {
        if (O.animating) {
          return false
        }
        O.fixLoop();
        var p = O.container[0].clientLeft;
        return O.slideTo(O.activeIndex - 1, W, V, s)
      } else {
        return O.slideTo(O.activeIndex - 1, W, V, s)
      }
    };
    O._slidePrev = function (p) {
      return O.slidePrev(true, p, true)
    };
    O.slideReset = function (s, V, p) {
      return O.slideTo(O.activeIndex, V, s)
    };
    O.setWrapperTransition = function (s, p) {
      O.wrapper.transition(s);
      if (O.params.effect !== "slide" && O.effects[O.params.effect]) {
        O.effects[O.params.effect].setTransition(s)
      }
      if (O.params.parallax && O.parallax) {
        O.parallax.setTransition(s)
      }
      if (O.params.scrollbar && O.scrollbar) {
        O.scrollbar.setTransition(s)
      }
      if (O.params.control && O.controller) {
        O.controller.setTransition(s, p)
      }
      O.emit("onSetTransition", O, s)
    };
    O.setWrapperTranslate = function (V, X, p) {
      var Y = 0,
        Z = 0,
        aa = 0;
      if (O.isHorizontal()) {
        Y = O.rtl ? -V : V
      } else {
        Z = V
      }
      if (O.params.roundLengths) {
        Y = N(Y);
        Z = N(Z)
      }
      if (!O.params.virtualTranslate) {
        if (O.support.transforms3d) {
          O.wrapper.transform("translate3d(" + Y + "px, " + Z + "px, " + aa + "px)")
        } else {
          O.wrapper.transform("translate(" + Y + "px, " + Z + "px)")
        }
      }
      O.translate = O.isHorizontal() ? Y : Z;
      var s;
      var W = O.maxTranslate() - O.minTranslate();
      if (W === 0) {
        s = 0
      } else {
        s = (V - O.minTranslate()) / (W)
      }
      if (s !== O.progress) {
        O.updateProgress(V)
      }
      if (X) {
        O.updateActiveIndex()
      }
      if (O.params.effect !== "slide" && O.effects[O.params.effect]) {
        O.effects[O.params.effect].setTranslate(O.translate)
      }
      if (O.params.parallax && O.parallax) {
        O.parallax.setTranslate(O.translate)
      }
      if (O.params.scrollbar && O.scrollbar) {
        O.scrollbar.setTranslate(O.translate)
      }
      if (O.params.control && O.controller) {
        O.controller.setTranslate(O.translate, p)
      }
      O.emit("onSetTranslate", O, O.translate)
    };
    O.getTranslate = function (W, p) {
      var X, V, s, Y;
      if (typeof p === "undefined") {
        p = "x"
      }
      if (O.params.virtualTranslate) {
        return O.rtl ? -O.translate : O.translate
      }
      s = window.getComputedStyle(W, null);
      if (window.WebKitCSSMatrix) {
        V = s.transform || s.webkitTransform;
        if (V.split(",").length > 6) {
          V = V.split(", ").map(function (Z) {
            return Z.replace(",", ".")
          }).join(", ")
        }
        Y = new window.WebKitCSSMatrix(V === "none" ? "" : V)
      } else {
        Y = s.MozTransform || s.OTransform || s.MsTransform || s.msTransform || s.transform || s.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
        X = Y.toString().split(",")
      }
      if (p === "x") {
        if (window.WebKitCSSMatrix) {
          V = Y.m41
        } else {
          if (X.length === 16) {
            V = parseFloat(X[12])
          } else {
            V = parseFloat(X[4])
          }
        }
      }
      if (p === "y") {
        if (window.WebKitCSSMatrix) {
          V = Y.m42
        } else {
          if (X.length === 16) {
            V = parseFloat(X[13])
          } else {
            V = parseFloat(X[5])
          }
        }
      }
      if (O.rtl && V) {
        V = -V
      }
      return V || 0
    };
    O.getWrapperTranslate = function (p) {
      if (typeof p === "undefined") {
        p = O.isHorizontal() ? "x" : "y"
      }
      return O.getTranslate(O.wrapper[0], p)
    };
    O.observers = [];

    function B(W, V) {
      V = V || {};
      var s = window.MutationObserver || window.WebkitMutationObserver;
      var p = new s(function (X) {
        X.forEach(function (Y) {
          O.onResize(true);
          O.emit("onObserverUpdate", O, Y)
        })
      });
      p.observe(W, {
        attributes: typeof V.attributes === "undefined" ? true : V.attributes,
        childList: typeof V.childList === "undefined" ? true : V.childList,
        characterData: typeof V.characterData === "undefined" ? true : V.characterData
      });
      O.observers.push(p)
    }
    O.initObservers = function () {
      if (O.params.observeParents) {
        var p = O.container.parents();
        for (var s = 0; s < p.length; s++) {
          B(p[s])
        }
      }
      B(O.container[0], {
        childList: false
      });
      B(O.wrapper[0], {
        attributes: false
      })
    };
    O.disconnectObservers = function () {
      for (var p = 0; p < O.observers.length; p++) {
        O.observers[p].disconnect()
      }
      O.observers = []
    };
    O.createLoop = function () {
      O.wrapper.children("." + O.params.slideClass + "." + O.params.slideDuplicateClass).remove();
      var W = O.wrapper.children("." + O.params.slideClass);
      if (O.params.slidesPerView === "auto" && !O.params.loopedSlides) {
        O.params.loopedSlides = W.length
      }
      O.loopedSlides = parseInt(O.params.loopedSlides || O.params.slidesPerView, 10);
      O.loopedSlides = O.loopedSlides + O.params.loopAdditionalSlides;
      if (O.loopedSlides > W.length) {
        O.loopedSlides = W.length
      }
      var V = [],
        p = [],
        s;
      W.each(function (Y, X) {
        var Z = a(this);
        if (Y < O.loopedSlides) {
          p.push(X)
        }
        if (Y < W.length && Y >= W.length - O.loopedSlides) {
          V.push(X)
        }
        Z.attr("data-swiper-slide-index", Y)
      });
      for (s = 0; s < p.length; s++) {
        O.wrapper.append(a(p[s].cloneNode(true)).addClass(O.params.slideDuplicateClass))
      }
      for (s = V.length - 1; s >= 0; s--) {
        O.wrapper.prepend(a(V[s].cloneNode(true)).addClass(O.params.slideDuplicateClass))
      }
    };
    O.destroyLoop = function () {
      O.wrapper.children("." + O.params.slideClass + "." + O.params.slideDuplicateClass).remove();
      O.slides.removeAttr("data-swiper-slide-index")
    };
    O.reLoop = function (s) {
      var p = O.activeIndex - O.loopedSlides;
      O.destroyLoop();
      O.createLoop();
      O.updateSlidesSize();
      if (s) {
        O.slideTo(p + O.loopedSlides, 0, false)
      }
    };
    O.fixLoop = function () {
      var p;
      if (O.activeIndex < O.loopedSlides) {
        p = O.slides.length - O.loopedSlides * 3 + O.activeIndex;
        p = p + O.loopedSlides;
        O.slideTo(p, 0, false, true)
      } else {
        if ((O.params.slidesPerView === "auto" && O.activeIndex >= O.loopedSlides * 2) || (O.activeIndex > O.slides.length - O.params.slidesPerView * 2)) {
          p = -O.slides.length + O.activeIndex + O.loopedSlides;
          p = p + O.loopedSlides;
          O.slideTo(p, 0, false, true)
        }
      }
    };
    O.appendSlide = function (s) {
      if (O.params.loop) {
        O.destroyLoop()
      }
      if (typeof s === "object" && s.length) {
        for (var p = 0; p < s.length; p++) {
          if (s[p]) {
            O.wrapper.append(s[p])
          }
        }
      } else {
        O.wrapper.append(s)
      }
      if (O.params.loop) {
        O.createLoop()
      }
      if (!(O.params.observer && O.support.observer)) {
        O.update(true)
      }
    };
    O.prependSlide = function (V) {
      if (O.params.loop) {
        O.destroyLoop()
      }
      var s = O.activeIndex + 1;
      if (typeof V === "object" && V.length) {
        for (var p = 0; p < V.length; p++) {
          if (V[p]) {
            O.wrapper.prepend(V[p])
          }
        }
        s = O.activeIndex + V.length
      } else {
        O.wrapper.prepend(V)
      }
      if (O.params.loop) {
        O.createLoop()
      }
      if (!(O.params.observer && O.support.observer)) {
        O.update(true)
      }
      O.slideTo(s, 0, false)
    };
    O.removeSlide = function (W) {
      if (O.params.loop) {
        O.destroyLoop();
        O.slides = O.wrapper.children("." + O.params.slideClass)
      }
      var V = O.activeIndex,
        s;
      if (typeof W === "object" && W.length) {
        for (var p = 0; p < W.length; p++) {
          s = W[p];
          if (O.slides[s]) {
            O.slides.eq(s).remove()
          }
          if (s < V) {
            V--
          }
        }
        V = Math.max(V, 0)
      } else {
        s = W;
        if (O.slides[s]) {
          O.slides.eq(s).remove()
        }
        if (s < V) {
          V--
        }
        V = Math.max(V, 0)
      }
      if (O.params.loop) {
        O.createLoop()
      }
      if (!(O.params.observer && O.support.observer)) {
        O.update(true)
      }
      if (O.params.loop) {
        O.slideTo(V + O.loopedSlides, 0, false)
      } else {
        O.slideTo(V, 0, false)
      }
    };
    O.removeAllSlides = function () {
      var s = [];
      for (var p = 0; p < O.slides.length; p++) {
        s.push(p)
      }
      O.removeSlide(s)
    };
    O.effects = {
      fade: {
        setTranslate: function () {
          for (var p = 0; p < O.slides.length; p++) {
            var V = O.slides.eq(p);
            var s = V[0].swiperSlideOffset;
            var X = -s;
            if (!O.params.virtualTranslate) {
              X = X - O.translate
            }
            var Y = 0;
            if (!O.isHorizontal()) {
              Y = X;
              X = 0
            }
            var W = O.params.fade.crossFade ? Math.max(1 - Math.abs(V[0].progress), 0) : 1 + Math.min(Math.max(V[0].progress, -1), 0);
            V.css({
              opacity: W
            }).transform("translate3d(" + X + "px, " + Y + "px, 0px)")
          }
        },
        setTransition: function (p) {
          O.slides.transition(p);
          if (O.params.virtualTranslate && p !== 0) {
            var s = false;
            O.slides.transitionEnd(function () {
              if (s) {
                return
              }
              if (!O) {
                return
              }
              s = true;
              O.animating = false;
              var W = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"];
              for (var V = 0; V < W.length; V++) {
                O.wrapper.trigger(W[V])
              }
            })
          }
        }
      },
      flip: {
        setTranslate: function () {
          for (var p = 0; p < O.slides.length; p++) {
            var ab = O.slides.eq(p);
            var V = ab[0].progress;
            if (O.params.flip.limitRotation) {
              V = Math.max(Math.min(ab[0].progress, 1), -1)
            }
            var s = ab[0].swiperSlideOffset;
            var W = -180 * V,
              Y = W,
              X = 0,
              ac = -s,
              ad = 0;
            if (!O.isHorizontal()) {
              ad = ac;
              ac = 0;
              X = -Y;
              Y = 0
            } else {
              if (O.rtl) {
                Y = -Y
              }
            }
            ab[0].style.zIndex = -Math.abs(Math.round(V)) + O.slides.length;
            if (O.params.flip.slideShadows) {
              var aa = O.isHorizontal() ? ab.find(".swiper-slide-shadow-left") : ab.find(".swiper-slide-shadow-top");
              var Z = O.isHorizontal() ? ab.find(".swiper-slide-shadow-right") : ab.find(".swiper-slide-shadow-bottom");
              if (aa.length === 0) {
                aa = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "left" : "top") + '"></div>');
                ab.append(aa)
              }
              if (Z.length === 0) {
                Z = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "right" : "bottom") + '"></div>');
                ab.append(Z)
              }
              if (aa.length) {
                aa[0].style.opacity = Math.max(-V, 0)
              }
              if (Z.length) {
                Z[0].style.opacity = Math.max(V, 0)
              }
            }
            ab.transform("translate3d(" + ac + "px, " + ad + "px, 0px) rotateX(" + X + "deg) rotateY(" + Y + "deg)")
          }
        },
        setTransition: function (p) {
          O.slides.transition(p).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(p);
          if (O.params.virtualTranslate && p !== 0) {
            var s = false;
            O.slides.eq(O.activeIndex).transitionEnd(function () {
              if (s) {
                return
              }
              if (!O) {
                return
              }
              if (!a(this).hasClass(O.params.slideActiveClass)) {
                return
              }
              s = true;
              O.animating = false;
              var W = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"];
              for (var V = 0; V < W.length; V++) {
                O.wrapper.trigger(W[V])
              }
            })
          }
        }
      },
      cube: {
        setTranslate: function () {
          var ak = 0,
            p;
          if (O.params.cube.shadow) {
            if (O.isHorizontal()) {
              p = O.wrapper.find(".swiper-cube-shadow");
              if (p.length === 0) {
                p = a('<div class="swiper-cube-shadow"></div>');
                O.wrapper.append(p)
              }
              p.css({
                height: O.width + "px"
              })
            } else {
              p = O.container.find(".swiper-cube-shadow");
              if (p.length === 0) {
                p = a('<div class="swiper-cube-shadow"></div>');
                O.container.append(p)
              }
            }
          }
          for (var s = 0; s < O.slides.length; s++) {
            var ae = O.slides.eq(s);
            var af = s * 90;
            var Y = Math.floor(af / 360);
            if (O.rtl) {
              af = -af;
              Y = Math.floor(-af / 360)
            }
            var X = Math.max(Math.min(ae[0].progress, 1), -1);
            var ah = 0,
              ai = 0,
              aj = 0;
            if (s % 4 === 0) {
              ah = -Y * 4 * O.size;
              aj = 0
            } else {
              if ((s - 1) % 4 === 0) {
                ah = 0;
                aj = -Y * 4 * O.size
              } else {
                if ((s - 2) % 4 === 0) {
                  ah = O.size + Y * 4 * O.size;
                  aj = O.size
                } else {
                  if ((s - 3) % 4 === 0) {
                    ah = -O.size;
                    aj = 3 * O.size + O.size * 4 * Y
                  }
                }
              }
            }
            if (O.rtl) {
              ah = -ah
            }
            if (!O.isHorizontal()) {
              ai = ah;
              ah = 0
            }
            var ag = "rotateX(" + (O.isHorizontal() ? 0 : -af) + "deg) rotateY(" + (O.isHorizontal() ? af : 0) + "deg) translate3d(" + ah + "px, " + ai + "px, " + aj + "px)";
            if (X <= 1 && X > -1) {
              ak = s * 90 + X * 90;
              if (O.rtl) {
                ak = -s * 90 - X * 90
              }
            }
            ae.transform(ag);
            if (O.params.cube.slideShadows) {
              var ad = O.isHorizontal() ? ae.find(".swiper-slide-shadow-left") : ae.find(".swiper-slide-shadow-top");
              var ab = O.isHorizontal() ? ae.find(".swiper-slide-shadow-right") : ae.find(".swiper-slide-shadow-bottom");
              if (ad.length === 0) {
                ad = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "left" : "top") + '"></div>');
                ae.append(ad)
              }
              if (ab.length === 0) {
                ab = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "right" : "bottom") + '"></div>');
                ae.append(ab)
              }
              if (ad.length) {
                ad[0].style.opacity = Math.max(-X, 0)
              }
              if (ab.length) {
                ab[0].style.opacity = Math.max(X, 0)
              }
            }
          }
          O.wrapper.css({
            "-webkit-transform-origin": "50% 50% -" + (O.size / 2) + "px",
            "-moz-transform-origin": "50% 50% -" + (O.size / 2) + "px",
            "-ms-transform-origin": "50% 50% -" + (O.size / 2) + "px",
            "transform-origin": "50% 50% -" + (O.size / 2) + "px"
          });
          if (O.params.cube.shadow) {
            if (O.isHorizontal()) {
              p.transform("translate3d(0px, " + (O.width / 2 + O.params.cube.shadowOffset) + "px, " + (-O.width / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (O.params.cube.shadowScale) + ")")
            } else {
              var ac = Math.abs(ak) - Math.floor(Math.abs(ak) / 90) * 90;
              var V = 1.5 - (Math.sin(ac * 2 * Math.PI / 360) / 2 + Math.cos(ac * 2 * Math.PI / 360) / 2);
              var Z = O.params.cube.shadowScale,
                aa = O.params.cube.shadowScale / V,
                W = O.params.cube.shadowOffset;
              p.transform("scale3d(" + Z + ", 1, " + aa + ") translate3d(0px, " + (O.height / 2 + W) + "px, " + (-O.height / 2 / aa) + "px) rotateX(-90deg)")
            }
          }
          var al = (O.isSafari || O.isUiWebView) ? (-O.size / 2) : 0;
          O.wrapper.transform("translate3d(0px,0," + al + "px) rotateX(" + (O.isHorizontal() ? 0 : ak) + "deg) rotateY(" + (O.isHorizontal() ? -ak : 0) + "deg)")
        },
        setTransition: function (p) {
          O.slides.transition(p).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(p);
          if (O.params.cube.shadow && !O.isHorizontal()) {
            O.container.find(".swiper-cube-shadow").transition(p)
          }
        }
      },
      coverflow: {
        setTranslate: function () {
          var ag = O.translate;
          var p = O.isHorizontal() ? -ag + O.width / 2 : -ag + O.height / 2;
          var X = O.isHorizontal() ? O.params.coverflow.rotate : -O.params.coverflow.rotate;
          var ah = O.params.coverflow.depth;
          for (var s = 0, V = O.slides.length; s < V; s++) {
            var ac = O.slides.eq(s);
            var ae = O.slidesSizesGrid[s];
            var ad = ac[0].swiperSlideOffset;
            var W = (p - ad - ae / 2) / ae * O.params.coverflow.modifier;
            var Z = O.isHorizontal() ? X * W : 0;
            var Y = O.isHorizontal() ? 0 : X * W;
            var ak = -ah * Math.abs(W);
            var aj = O.isHorizontal() ? 0 : O.params.coverflow.stretch * (W);
            var ai = O.isHorizontal() ? O.params.coverflow.stretch * (W) : 0;
            if (Math.abs(ai) < 0.001) {
              ai = 0
            }
            if (Math.abs(aj) < 0.001) {
              aj = 0
            }
            if (Math.abs(ak) < 0.001) {
              ak = 0
            }
            if (Math.abs(Z) < 0.001) {
              Z = 0
            }
            if (Math.abs(Y) < 0.001) {
              Y = 0
            }
            var af = "translate3d(" + ai + "px," + aj + "px," + ak + "px)  rotateX(" + Y + "deg) rotateY(" + Z + "deg)";
            ac.transform(af);
            ac[0].style.zIndex = -Math.abs(Math.round(W)) + 1;
            if (O.params.coverflow.slideShadows) {
              var ab = O.isHorizontal() ? ac.find(".swiper-slide-shadow-left") : ac.find(".swiper-slide-shadow-top");
              var aa = O.isHorizontal() ? ac.find(".swiper-slide-shadow-right") : ac.find(".swiper-slide-shadow-bottom");
              if (ab.length === 0) {
                ab = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "left" : "top") + '"></div>');
                ac.append(ab)
              }
              if (aa.length === 0) {
                aa = a('<div class="swiper-slide-shadow-' + (O.isHorizontal() ? "right" : "bottom") + '"></div>');
                ac.append(aa)
              }
              if (ab.length) {
                ab[0].style.opacity = W > 0 ? W : 0
              }
              if (aa.length) {
                aa[0].style.opacity = (-W) > 0 ? -W : 0
              }
              if (ab.length) {
                ab[0].style.background = "#9D4EE7"
              }
              if (aa.length) {
                aa[0].style.background = "#9D4EE7"
              }
            }
          }
          if (O.browser.ie) {
            var al = O.wrapper[0].style;
            al.perspectiveOrigin = p + "px 50%"
          }
        },
        setTransition: function (p) {
          O.slides.transition(p).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(p)
        }
      }
    };
    O.lazy = {
      initialImageLoaded: false,
      loadImageInSlide: function (s, V) {
        if (typeof s === "undefined") {
          return
        }
        if (typeof V === "undefined") {
          V = true
        }
        if (O.slides.length === 0) {
          return
        }
        var W = O.slides.eq(s);
        var p = W.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");
        if (W.hasClass("swiper-lazy") && !W.hasClass("swiper-lazy-loaded") && !W.hasClass("swiper-lazy-loading")) {
          p = p.add(W[0])
        }
        if (p.length === 0) {
          return
        }
        p.each(function () {
          var X = a(this);
          X.addClass("swiper-lazy-loading");
          var Y = X.attr("data-background");
          var Z = X.attr("data-src"),
            aa = X.attr("data-srcset");
          O.loadImage(X[0], (Z || Y), aa, false, function () {
            if (Y) {
              X.css("background-image", 'url("' + Y + '")');
              X.removeAttr("data-background")
            } else {
              if (aa) {
                X.attr("srcset", aa);
                X.removeAttr("data-srcset")
              }
              if (Z) {
                X.attr("src", Z);
                X.removeAttr("data-src")
              }
            }
            X.addClass("swiper-lazy-loaded").removeClass("swiper-lazy-loading");
            W.find(".swiper-lazy-preloader, .preloader").remove();
            if (O.params.loop && V) {
              var ad = W.attr("data-swiper-slide-index");
              if (W.hasClass(O.params.slideDuplicateClass)) {
                var ac = O.wrapper.children('[data-swiper-slide-index="' + ad + '"]:not(.' + O.params.slideDuplicateClass + ")");
                O.lazy.loadImageInSlide(ac.index(), false)
              } else {
                var ab = O.wrapper.children("." + O.params.slideDuplicateClass + '[data-swiper-slide-index="' + ad + '"]');
                O.lazy.loadImageInSlide(ab.index(), false)
              }
            }
            O.emit("onLazyImageReady", O, W[0], X[0])
          });
          O.emit("onLazyImageLoad", O, W[0], X[0])
        })
      },
      load: function () {
        var s;
        if (O.params.watchSlidesVisibility) {
          O.wrapper.children("." + O.params.slideVisibleClass).each(function () {
            O.lazy.loadImageInSlide(a(this).index())
          })
        } else {
          if (O.params.slidesPerView > 1) {
            for (s = O.activeIndex; s < O.activeIndex + O.params.slidesPerView; s++) {
              if (O.slides[s]) {
                O.lazy.loadImageInSlide(s)
              }
            }
          } else {
            O.lazy.loadImageInSlide(O.activeIndex)
          }
        }
        if (O.params.lazyLoadingInPrevNext) {
          if (O.params.slidesPerView > 1 || (O.params.lazyLoadingInPrevNextAmount && O.params.lazyLoadingInPrevNextAmount > 1)) {
            var p = O.params.lazyLoadingInPrevNextAmount;
            var Z = O.params.slidesPerView;
            var V = Math.min(O.activeIndex + Z + Math.max(p, Z), O.slides.length);
            var W = Math.max(O.activeIndex - Math.max(Z, p), 0);
            for (s = O.activeIndex + O.params.slidesPerView; s < V; s++) {
              if (O.slides[s]) {
                O.lazy.loadImageInSlide(s)
              }
            }
            for (s = W; s < O.activeIndex; s++) {
              if (O.slides[s]) {
                O.lazy.loadImageInSlide(s)
              }
            }
          } else {
            var X = O.wrapper.children("." + O.params.slideNextClass);
            if (X.length > 0) {
              O.lazy.loadImageInSlide(X.index())
            }
            var Y = O.wrapper.children("." + O.params.slidePrevClass);
            if (Y.length > 0) {
              O.lazy.loadImageInSlide(Y.index())
            }
          }
        }
      },
      onTransitionStart: function () {
        if (O.params.lazyLoading) {
          if (O.params.lazyLoadingOnTransitionStart || (!O.params.lazyLoadingOnTransitionStart && !O.lazy.initialImageLoaded)) {
            O.lazy.load()
          }
        }
      },
      onTransitionEnd: function () {
        if (O.params.lazyLoading && !O.params.lazyLoadingOnTransitionStart) {
          O.lazy.load()
        }
      }
    };
    O.scrollbar = {
      isTouched: false,
      setDragPosition: function (p) {
        var Y = O.scrollbar;
        var aa = 0,
          ab = 0;
        var Z;
        var s = O.isHorizontal() ? ((p.type === "touchstart" || p.type === "touchmove") ? p.targetTouches[0].pageX : p.pageX || p.clientX) : ((p.type === "touchstart" || p.type === "touchmove") ? p.targetTouches[0].pageY : p.pageY || p.clientY);
        var V = (s) - Y.track.offset()[O.isHorizontal() ? "left" : "top"] - Y.dragSize / 2;
        var X = -O.minTranslate() * Y.moveDivider;
        var W = -O.maxTranslate() * Y.moveDivider;
        if (V < X) {
          V = X
        } else {
          if (V > W) {
            V = W
          }
        }
        V = -V / Y.moveDivider;
        O.updateProgress(V);
        O.setWrapperTranslate(V, true)
      },
      dragStart: function (p) {
        var s = O.scrollbar;
        s.isTouched = true;
        p.preventDefault();
        p.stopPropagation();
        s.setDragPosition(p);
        clearTimeout(s.dragTimeout);
        s.track.transition(0);
        if (O.params.scrollbarHide) {
          s.track.css("opacity", 1)
        }
        O.wrapper.transition(100);
        s.drag.transition(100);
        O.emit("onScrollbarDragStart", O)
      },
      dragMove: function (p) {
        var s = O.scrollbar;
        if (!s.isTouched) {
          return
        }
        if (p.preventDefault) {
          p.preventDefault()
        } else {
          p.returnValue = false
        }
        s.setDragPosition(p);
        O.wrapper.transition(0);
        s.track.transition(0);
        s.drag.transition(0);
        O.emit("onScrollbarDragMove", O)
      },
      dragEnd: function (p) {
        var s = O.scrollbar;
        if (!s.isTouched) {
          return
        }
        s.isTouched = false;
        if (O.params.scrollbarHide) {
          clearTimeout(s.dragTimeout);
          s.dragTimeout = setTimeout(function () {
            s.track.css("opacity", 0);
            s.track.transition(400)
          }, 1000)
        }
        O.emit("onScrollbarDragEnd", O);
        if (O.params.scrollbarSnapOnRelease) {
          O.slideReset()
        }
      },
      enableDraggable: function () {
        var p = O.scrollbar;
        var s = O.support.touch ? p.track : document;
        a(p.track).on(O.touchEvents.start, p.dragStart);
        a(s).on(O.touchEvents.move, p.dragMove);
        a(s).on(O.touchEvents.end, p.dragEnd)
      },
      disableDraggable: function () {
        var p = O.scrollbar;
        var s = O.support.touch ? p.track : document;
        a(p.track).off(O.touchEvents.start, p.dragStart);
        a(s).off(O.touchEvents.move, p.dragMove);
        a(s).off(O.touchEvents.end, p.dragEnd)
      },
      set: function () {
        if (!O.params.scrollbar) {
          return
        }
        var p = O.scrollbar;
        p.track = a(O.params.scrollbar);
        if (O.params.uniqueNavElements && typeof O.params.scrollbar === "string" && p.track.length > 1 && O.container.find(O.params.scrollbar).length === 1) {
          p.track = O.container.find(O.params.scrollbar)
        }
        p.drag = p.track.find(".swiper-scrollbar-drag");
        if (p.drag.length === 0) {
          p.drag = a('<div class="swiper-scrollbar-drag"></div>');
          p.track.append(p.drag)
        }
        p.drag[0].style.width = "";
        p.drag[0].style.height = "";
        p.trackSize = O.isHorizontal() ? p.track[0].offsetWidth : p.track[0].offsetHeight;
        p.divider = O.size / O.virtualSize;
        p.moveDivider = p.divider * (p.trackSize / O.size);
        p.dragSize = p.trackSize * p.divider;
        if (O.isHorizontal()) {
          p.drag[0].style.width = p.dragSize + "px"
        } else {
          p.drag[0].style.height = p.dragSize + "px"
        }
        if (p.divider >= 1) {
          p.track[0].style.display = "none"
        } else {
          p.track[0].style.display = ""
        }
        if (O.params.scrollbarHide) {
          p.track[0].style.opacity = 0
        }
      },
      setTranslate: function () {
        if (!O.params.scrollbar) {
          return
        }
        var p;
        var W = O.scrollbar;
        var X = O.translate || 0;
        var s;
        var V = W.dragSize;
        s = (W.trackSize - W.dragSize) * O.progress;
        if (O.rtl && O.isHorizontal()) {
          s = -s;
          if (s > 0) {
            V = W.dragSize - s;
            s = 0
          } else {
            if (-s + W.dragSize > W.trackSize) {
              V = W.trackSize + s
            }
          }
        } else {
          if (s < 0) {
            V = W.dragSize + s;
            s = 0
          } else {
            if (s + W.dragSize > W.trackSize) {
              V = W.trackSize - s
            }
          }
        }
        if (O.isHorizontal()) {
          if (O.support.transforms3d) {
            W.drag.transform("translate3d(" + (s) + "px, 0, 0)")
          } else {
            W.drag.transform("translateX(" + (s) + "px)")
          }
          W.drag[0].style.width = V + "px"
        } else {
          if (O.support.transforms3d) {
            W.drag.transform("translate3d(0px, " + (s) + "px, 0)")
          } else {
            W.drag.transform("translateY(" + (s) + "px)")
          }
          W.drag[0].style.height = V + "px"
        }
        if (O.params.scrollbarHide) {
          clearTimeout(W.timeout);
          W.track[0].style.opacity = 1;
          W.timeout = setTimeout(function () {
            W.track[0].style.opacity = 0;
            W.track.transition(400)
          }, 1000)
        }
      },
      setTransition: function (p) {
        if (!O.params.scrollbar) {
          return
        }
        O.scrollbar.drag.transition(p)
      }
    };
    O.controller = {
      LinearSpline: function (X, Y) {
        this.x = X;
        this.y = Y;
        this.lastIndex = X.length - 1;
        var s, V;
        var W = this.x.length;
        this.interpolate = function (Z) {
          if (!Z) {
            return 0
          }
          V = p(this.x, Z);
          s = V - 1;
          return ((Z - this.x[s]) * (this.y[V] - this.y[s])) / (this.x[V] - this.x[s]) + this.y[s]
        };
        var p = (function () {
          var aa, ab, Z;
          return function (ac, ad) {
            ab = -1;
            aa = ac.length;
            while (aa - ab > 1) {
              if (ac[Z = aa + ab >> 1] <= ad) {
                ab = Z
              } else {
                aa = Z
              }
            }
            return aa
          }
        })()
      },
      getInterpolateFunction: function (p) {
        if (!O.controller.spline) {
          O.controller.spline = O.params.loop ? new O.controller.LinearSpline(O.slidesGrid, p.slidesGrid) : new O.controller.LinearSpline(O.snapGrid, p.snapGrid)
        }
      },
      setTranslate: function (Z, p) {
        var s = O.params.control;
        var X, V;

        function Y(aa) {
          Z = aa.rtl && aa.params.direction === "horizontal" ? -O.translate : O.translate;
          if (O.params.controlBy === "slide") {
            O.controller.getInterpolateFunction(aa);
            V = -O.controller.spline.interpolate(-Z)
          }
          if (!V || O.params.controlBy === "container") {
            X = (aa.maxTranslate() - aa.minTranslate()) / (O.maxTranslate() - O.minTranslate());
            V = (Z - O.minTranslate()) * X + aa.minTranslate()
          }
          if (O.params.controlInverse) {
            V = aa.maxTranslate() - V
          }
          aa.updateProgress(V);
          aa.setWrapperTranslate(V, false, O);
          aa.updateActiveIndex()
        }
        if (O.isArray(s)) {
          for (var W = 0; W < s.length; W++) {
            if (s[W] !== p && s[W] instanceof f) {
              Y(s[W])
            }
          }
        } else {
          if (s instanceof f && p !== s) {
            Y(s)
          }
        }
      },
      setTransition: function (V, p) {
        var s = O.params.control;
        var W;

        function X(Y) {
          Y.setWrapperTransition(V, O);
          if (V !== 0) {
            Y.onTransitionStart();
            Y.wrapper.transitionEnd(function () {
              if (!s) {
                return
              }
              if (Y.params.loop && O.params.controlBy === "slide") {
                Y.fixLoop()
              }
              Y.onTransitionEnd()
            })
          }
        }
        if (O.isArray(s)) {
          for (W = 0; W < s.length; W++) {
            if (s[W] !== p && s[W] instanceof f) {
              X(s[W])
            }
          }
        } else {
          if (s instanceof f && p !== s) {
            X(s)
          }
        }
      }
    };
    O.hashnav = {
      init: function () {
        if (!O.params.hashnav) {
          return
        }
        O.hashnav.initialized = true;
        var p = document.location.hash.replace("#", "");
        if (!p) {
          return
        }
        var Z = 0;
        for (var s = 0, W = O.slides.length; s < W; s++) {
          var X = O.slides.eq(s);
          var Y = X.attr("data-hash");
          if (Y === p && !X.hasClass(O.params.slideDuplicateClass)) {
            var V = X.index();
            O.slideTo(V, Z, O.params.runCallbacksOnInit, true)
          }
        }
      },
      setHash: function () {
        if (!O.hashnav.initialized || !O.params.hashnav) {
          return
        }
        document.location.hash = O.slides.eq(O.activeIndex).attr("data-hash") || ""
      }
    };

    function y(p) {
      if (p.originalEvent) {
        p = p.originalEvent
      }
      var W = p.keyCode || p.charCode;
      if (!O.params.allowSwipeToNext && (O.isHorizontal() && W === 39 || !O.isHorizontal() && W === 40)) {
        return false
      }
      if (!O.params.allowSwipeToPrev && (O.isHorizontal() && W === 37 || !O.isHorizontal() && W === 38)) {
        return false
      }
      if (p.shiftKey || p.altKey || p.ctrlKey || p.metaKey) {
        return
      }
      if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === "input" || document.activeElement.nodeName.toLowerCase() === "textarea")) {
        return
      }
      if (W === 37 || W === 39 || W === 38 || W === 40) {
        var V = false;
        if (O.container.parents(".swiper-slide").length > 0 && O.container.parents(".swiper-slide-active").length === 0) {
          return
        }
        var ab = {
          left: window.pageXOffset,
          top: window.pageYOffset
        };
        var ac = window.innerWidth;
        var aa = window.innerHeight;
        var Z = O.container.offset();
        if (O.rtl) {
          Z.left = Z.left - O.container[0].scrollLeft
        }
        var Y = [
          [Z.left, Z.top],
          [Z.left + O.width, Z.top],
          [Z.left, Z.top + O.height],
          [Z.left + O.width, Z.top + O.height]
        ];
        for (var s = 0; s < Y.length; s++) {
          var X = Y[s];
          if (X[0] >= ab.left && X[0] <= ab.left + ac && X[1] >= ab.top && X[1] <= ab.top + aa) {
            V = true
          }
        }
        if (!V) {
          return
        }
      }
      if (O.isHorizontal()) {
        if (W === 37 || W === 39) {
          if (p.preventDefault) {
            p.preventDefault()
          } else {
            p.returnValue = false
          }
        }
        if ((W === 39 && !O.rtl) || (W === 37 && O.rtl)) {
          O.slideNext()
        }
        if ((W === 37 && !O.rtl) || (W === 39 && O.rtl)) {
          O.slidePrev()
        }
      } else {
        if (W === 38 || W === 40) {
          if (p.preventDefault) {
            p.preventDefault()
          } else {
            p.returnValue = false
          }
        }
        if (W === 40) {
          O.slideNext()
        }
        if (W === 38) {
          O.slidePrev()
        }
      }
    }
    O.disableKeyboardControl = function () {
      O.params.keyboardControl = false;
      a(document).off("keydown", y)
    };
    O.enableKeyboardControl = function () {
      O.params.keyboardControl = true;
      a(document).on("keydown", y)
    };
    O.mousewheel = {
      event: false,
      lastScrollTime: (new window.Date()).getTime()
    };
    if (O.params.mousewheelControl) {
      try {
        new window.WheelEvent("wheel");
        O.mousewheel.event = "wheel"
      } catch (v) {
        if (window.WheelEvent || (O.container[0] && "wheel" in O.container[0])) {
          O.mousewheel.event = "wheel"
        }
      }
      if (!O.mousewheel.event && window.WheelEvent) {}
      if (!O.mousewheel.event && document.onmousewheel !== undefined) {
        O.mousewheel.event = "mousewheel"
      }
      if (!O.mousewheel.event) {
        O.mousewheel.event = "DOMMouseScroll"
      }
    }

    function z(s) {
      if (s.originalEvent) {
        s = s.originalEvent
      }
      var Z = O.mousewheel.event;
      var p = 0;
      var W = O.rtl ? -1 : 1;
      if (Z === "mousewheel") {
        if (O.params.mousewheelForceToAxis) {
          if (O.isHorizontal()) {
            if (Math.abs(s.wheelDeltaX) > Math.abs(s.wheelDeltaY)) {
              p = s.wheelDeltaX * W
            } else {
              return
            }
          } else {
            if (Math.abs(s.wheelDeltaY) > Math.abs(s.wheelDeltaX)) {
              p = s.wheelDeltaY
            } else {
              return
            }
          }
        } else {
          p = Math.abs(s.wheelDeltaX) > Math.abs(s.wheelDeltaY) ? -s.wheelDeltaX * W : -s.wheelDeltaY
        }
      } else {
        if (Z === "DOMMouseScroll") {
          p = -s.detail
        } else {
          if (Z === "wheel") {
            if (O.params.mousewheelForceToAxis) {
              if (O.isHorizontal()) {
                if (Math.abs(s.deltaX) > Math.abs(s.deltaY)) {
                  p = -s.deltaX * W
                } else {
                  return
                }
              } else {
                if (Math.abs(s.deltaY) > Math.abs(s.deltaX)) {
                  p = -s.deltaY
                } else {
                  return
                }
              }
            } else {
              p = Math.abs(s.deltaX) > Math.abs(s.deltaY) ? -s.deltaX * W : -s.deltaY
            }
          }
        }
      }
      if (p === 0) {
        return
      }
      if (O.params.mousewheelInvert) {
        p = -p
      }
      if (!O.params.freeMode) {
        if ((new window.Date()).getTime() - O.mousewheel.lastScrollTime > 60) {
          if (p < 0) {
            if ((!O.isEnd || O.params.loop) && !O.animating) {
              O.slideNext()
            } else {
              if (O.params.mousewheelReleaseOnEdges) {
                return true
              }
            }
          } else {
            if ((!O.isBeginning || O.params.loop) && !O.animating) {
              O.slidePrev()
            } else {
              if (O.params.mousewheelReleaseOnEdges) {
                return true
              }
            }
          }
        }
        O.mousewheel.lastScrollTime = (new window.Date()).getTime()
      } else {
        var V = O.getWrapperTranslate() + p * O.params.mousewheelSensitivity;
        var X = O.isBeginning,
          Y = O.isEnd;
        if (V >= O.minTranslate()) {
          V = O.minTranslate()
        }
        if (V <= O.maxTranslate()) {
          V = O.maxTranslate()
        }
        O.setWrapperTransition(0);
        O.setWrapperTranslate(V);
        O.updateProgress();
        O.updateActiveIndex();
        if (!X && O.isBeginning || !Y && O.isEnd) {
          O.updateClasses()
        }
        if (O.params.freeModeSticky) {
          clearTimeout(O.mousewheel.timeout);
          O.mousewheel.timeout = setTimeout(function () {
            O.slideReset()
          }, 300)
        } else {
          if (O.params.lazyLoading && O.lazy) {
            O.lazy.load()
          }
        }
        if (V === 0 || V === O.maxTranslate()) {
          return
        }
      }
      if (O.params.autoplay) {
        O.stopAutoplay()
      }
      if (s.preventDefault) {
        s.preventDefault()
      } else {
        s.returnValue = false
      }
      return false
    }
    O.disableMousewheelControl = function () {
      if (!O.mousewheel.event) {
        return false
      }
      O.container.off(O.mousewheel.event, z);
      return true
    };
    O.enableMousewheelControl = function () {
      if (!O.mousewheel.event) {
        return false
      }
      O.container.on(O.mousewheel.event, z);
      return true
    };

    function P(s, W) {
      s = a(s);
      var V, X, Y;
      var Z = O.rtl ? -1 : 1;
      V = s.attr("data-swiper-parallax") || "0";
      X = s.attr("data-swiper-parallax-x");
      Y = s.attr("data-swiper-parallax-y");
      if (X || Y) {
        X = X || "0";
        Y = Y || "0"
      } else {
        if (O.isHorizontal()) {
          X = V;
          Y = "0"
        } else {
          Y = V;
          X = "0"
        }
      }
      if ((X).indexOf("%") >= 0) {
        X = parseInt(X, 10) * W * Z + "%"
      } else {
        X = X * W * Z + "px"
      }
      if ((Y).indexOf("%") >= 0) {
        Y = parseInt(Y, 10) * W + "%"
      } else {
        Y = Y * W + "px"
      }
      s.transform("translate3d(" + X + ", " + Y + ",0px)")
    }
    O.parallax = {
      setTranslate: function () {
        O.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
          P(this, O.progress)
        });
        O.slides.each(function () {
          var p = a(this);
          p.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
            var s = Math.min(Math.max(p[0].progress, -1), 1);
            P(this, s)
          })
        })
      },
      setTransition: function (p) {
        if (typeof p === "undefined") {
          p = O.params.speed
        }
        O.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
          var s = a(this);
          var V = parseInt(s.attr("data-swiper-parallax-duration"), 10) || p;
          if (p === 0) {
            V = 0
          }
          s.transition(V)
        })
      }
    };
    O._plugins = [];
    for (var M in O.plugins) {
      var J = O.plugins[M](O, O.params[M]);
      if (J) {
        O._plugins.push(J)
      }
    }
    O.callPlugins = function (p) {
      for (var s = 0; s < O._plugins.length; s++) {
        if (p in O._plugins[s]) {
          O._plugins[s][p](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
        }
      }
    };

    function H(p) {
      if (p.indexOf("on") !== 0) {
        if (p[0] !== p[0].toUpperCase()) {
          p = "on" + p[0].toUpperCase() + p.substring(1)
        } else {
          p = "on" + p
        }
      }
      return p
    }
    O.emitterEventListeners = {};
    O.emit = function (p) {
      if (O.params[p]) {
        O.params[p](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
      }
      var s;
      if (O.emitterEventListeners[p]) {
        for (s = 0; s < O.emitterEventListeners[p].length; s++) {
          O.emitterEventListeners[p][s](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
        }
      }
      if (O.callPlugins) {
        O.callPlugins(p, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
      }
    };
    O.on = function (p, s) {
      p = H(p);
      if (!O.emitterEventListeners[p]) {
        O.emitterEventListeners[p] = []
      }
      O.emitterEventListeners[p].push(s);
      return O
    };
    O.off = function (p, s) {
      var V;
      p = H(p);
      if (typeof s === "undefined") {
        O.emitterEventListeners[p] = [];
        return O
      }
      if (!O.emitterEventListeners[p] || O.emitterEventListeners[p].length === 0) {
        return
      }
      for (V = 0; V < O.emitterEventListeners[p].length; V++) {
        if (O.emitterEventListeners[p][V] === s) {
          O.emitterEventListeners[p].splice(V, 1)
        }
      }
      return O
    };
    O.once = function (s, V) {
      s = H(s);
      var p = function () {
        V(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
        O.off(s, p)
      };
      O.on(s, p);
      return O
    };
    O.a11y = {
      makeFocusable: function (p) {
        p.attr("tabIndex", "0");
        return p
      },
      addRole: function (p, s) {
        p.attr("role", s);
        return p
      },
      addLabel: function (p, s) {
        p.attr("aria-label", s);
        return p
      },
      disable: function (p) {
        p.attr("aria-disabled", true);
        return p
      },
      enable: function (p) {
        p.attr("aria-disabled", false);
        return p
      },
      onEnterKey: function (p) {
        if (p.keyCode !== 13) {
          return
        }
        if (a(p.target).is(O.params.nextButton)) {
          O.onClickNext(p);
          if (O.isEnd) {
            O.a11y.notify(O.params.lastSlideMessage)
          } else {
            O.a11y.notify(O.params.nextSlideMessage)
          }
        } else {
          if (a(p.target).is(O.params.prevButton)) {
            O.onClickPrev(p);
            if (O.isBeginning) {
              O.a11y.notify(O.params.firstSlideMessage)
            } else {
              O.a11y.notify(O.params.prevSlideMessage)
            }
          }
        }
        if (a(p.target).is("." + O.params.bulletClass)) {
          a(p.target)[0].click()
        }
      },
      liveRegion: a('<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>'),
      notify: function (p) {
        var s = O.a11y.liveRegion;
        if (s.length === 0) {
          return
        }
        s.html("");
        s.html(p)
      },
      init: function () {
        if (O.params.nextButton && O.nextButton && O.nextButton.length > 0) {
          O.a11y.makeFocusable(O.nextButton);
          O.a11y.addRole(O.nextButton, "button");
          O.a11y.addLabel(O.nextButton, O.params.nextSlideMessage)
        }
        if (O.params.prevButton && O.prevButton && O.prevButton.length > 0) {
          O.a11y.makeFocusable(O.prevButton);
          O.a11y.addRole(O.prevButton, "button");
          O.a11y.addLabel(O.prevButton, O.params.prevSlideMessage)
        }
        a(O.container).append(O.a11y.liveRegion)
      },
      initPagination: function () {
        if (O.params.pagination && O.params.paginationClickable && O.bullets && O.bullets.length) {
          O.bullets.each(function () {
            var p = a(this);
            O.a11y.makeFocusable(p);
            O.a11y.addRole(p, "button");
            O.a11y.addLabel(p, O.params.paginationBulletMessage.replace(/{{index}}/, p.index() + 1))
          })
        }
      },
      destroy: function () {
        if (O.a11y.liveRegion && O.a11y.liveRegion.length > 0) {
          O.a11y.liveRegion.remove()
        }
      }
    };
    O.init = function () {
      if (O.params.loop) {
        O.createLoop()
      }
      O.updateContainerSize();
      O.updateSlidesSize();
      O.updatePagination();
      if (O.params.scrollbar && O.scrollbar) {
        O.scrollbar.set();
        if (O.params.scrollbarDraggable) {
          O.scrollbar.enableDraggable()
        }
      }
      if (O.params.effect !== "slide" && O.effects[O.params.effect]) {
        if (!O.params.loop) {
          O.updateProgress()
        }
        O.effects[O.params.effect].setTranslate()
      }
      if (O.params.loop) {
        O.slideTo(O.params.initialSlide + O.loopedSlides, 0, O.params.runCallbacksOnInit)
      } else {
        O.slideTo(O.params.initialSlide, 0, O.params.runCallbacksOnInit);
        if (O.params.initialSlide === 0) {
          if (O.parallax && O.params.parallax) {
            O.parallax.setTranslate()
          }
          if (O.lazy && O.params.lazyLoading) {
            O.lazy.load();
            O.lazy.initialImageLoaded = true
          }
        }
      }
      O.attachEvents();
      if (O.params.observer && O.support.observer) {
        O.initObservers()
      }
      if (O.params.preloadImages && !O.params.lazyLoading) {
        O.preloadImages()
      }
      if (O.params.autoplay) {
        O.startAutoplay()
      }
      if (O.params.keyboardControl) {
        if (O.enableKeyboardControl) {
          O.enableKeyboardControl()
        }
      }
      if (O.params.mousewheelControl) {
        if (O.enableMousewheelControl) {
          O.enableMousewheelControl()
        }
      }
      if (O.params.hashnav) {
        if (O.hashnav) {
          O.hashnav.init()
        }
      }
      if (O.params.a11y && O.a11y) {
        O.a11y.init()
      }
      O.emit("onInit", O)
    };
    O.cleanupStyles = function () {
      O.container.removeClass(O.classNames.join(" ")).removeAttr("style");
      O.wrapper.removeAttr("style");
      if (O.slides && O.slides.length) {
        O.slides.removeClass([O.params.slideVisibleClass, O.params.slideActiveClass, O.params.slideNextClass, O.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row")
      }
      if (O.paginationContainer && O.paginationContainer.length) {
        O.paginationContainer.removeClass(O.params.paginationHiddenClass)
      }
      if (O.bullets && O.bullets.length) {
        O.bullets.removeClass(O.params.bulletActiveClass)
      }
      if (O.params.prevButton) {
        a(O.params.prevButton).removeClass(O.params.buttonDisabledClass)
      }
      if (O.params.nextButton) {
        a(O.params.nextButton).removeClass(O.params.buttonDisabledClass)
      }
      if (O.params.scrollbar && O.scrollbar) {
        if (O.scrollbar.track && O.scrollbar.track.length) {
          O.scrollbar.track.removeAttr("style")
        }
        if (O.scrollbar.drag && O.scrollbar.drag.length) {
          O.scrollbar.drag.removeAttr("style")
        }
      }
    };
    O.destroy = function (s, p) {
      O.detachEvents();
      O.stopAutoplay();
      if (O.params.scrollbar && O.scrollbar) {
        if (O.params.scrollbarDraggable) {
          O.scrollbar.disableDraggable()
        }
      }
      if (O.params.loop) {
        O.destroyLoop()
      }
      if (p) {
        O.cleanupStyles()
      }
      O.disconnectObservers();
      if (O.params.keyboardControl) {
        if (O.disableKeyboardControl) {
          O.disableKeyboardControl()
        }
      }
      if (O.params.mousewheelControl) {
        if (O.disableMousewheelControl) {
          O.disableMousewheelControl()
        }
      }
      if (O.params.a11y && O.a11y) {
        O.a11y.destroy()
      }
      O.emit("onDestroy");
      if (s !== false) {
        O = null
      }
    };
    O.init();
    return O
  };
  f.prototype = {
    isSafari: (function () {
      var h = navigator.userAgent.toLowerCase();
      return (h.indexOf("safari") >= 0 && h.indexOf("chrome") < 0 && h.indexOf("android") < 0)
    })(),
    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),
    isArray: function (h) {
      return Object.prototype.toString.apply(h) === "[object Array]"
    },
    browser: {
      ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
      ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1)
    },
    device: (function () {
      var l = navigator.userAgent;
      var h = l.match(/(Android);?[\s\/]+([\d.]+)?/);
      var i = l.match(/(iPad).*OS\s([\d_]+)/);
      var k = l.match(/(iPod)(.*OS\s([\d_]+))?/);
      var j = !i && l.match(/(iPhone\sOS)\s([\d_]+)/);
      return {
        ios: i || j || k,
        android: h
      }
    })(),
    support: {
      touch: (window.Modernizr && Modernizr.touch === true) || (function () {
        return !!(("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch)
      })(),
      transforms3d: (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {
        var h = document.createElement("div").style;
        return ("webkitPerspective" in h || "MozPerspective" in h || "OPerspective" in h || "MsPerspective" in h || "perspective" in h)
      })(),
      flexbox: (function () {
        var h = document.createElement("div").style;
        var k = ("alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient").split(" ");
        for (var j = 0; j < k.length; j++) {
          if (k[j] in h) {
            return true
          }
        }
      })(),
      observer: (function () {
        return ("MutationObserver" in window || "WebkitMutationObserver" in window)
      })()
    },
    plugins: {}
  };
  var c = (function () {
    var i = function (k) {
      var j = this,
        l = 0;
      for (l = 0; l < k.length; l++) {
        j[l] = k[l]
      }
      j.length = k.length;
      return this
    };
    var h = function (o, k) {
      var j = [],
        n = 0;
      if (o && !k) {
        if (o instanceof i) {
          return o
        }
      }
      if (o) {
        if (typeof o === "string") {
          var l, p, m = o.trim();
          if (m.indexOf("<") >= 0 && m.indexOf(">") >= 0) {
            var q = "div";
            if (m.indexOf("<li") === 0) {
              q = "ul"
            }
            if (m.indexOf("<tr") === 0) {
              q = "tbody"
            }
            if (m.indexOf("<td") === 0 || m.indexOf("<th") === 0) {
              q = "tr"
            }
            if (m.indexOf("<tbody") === 0) {
              q = "table"
            }
            if (m.indexOf("<option") === 0) {
              q = "select"
            }
            p = document.createElement(q);
            p.innerHTML = o;
            for (n = 0; n < p.childNodes.length; n++) {
              j.push(p.childNodes[n])
            }
          } else {
            if (!k && o[0] === "#" && !o.match(/[ .<>:~]/)) {
              l = [document.getElementById(o.split("#")[1])]
            } else {
              l = (k || document).querySelectorAll(o)
            }
            for (n = 0; n < l.length; n++) {
              if (l[n]) {
                j.push(l[n])
              }
            }
          }
        } else {
          if (o.nodeType || o === window || o === document) {
            j.push(o)
          } else {
            if (o.length > 0 && o[0].nodeType) {
              for (n = 0; n < o.length; n++) {
                j.push(o[n])
              }
            }
          }
        }
      }
      return new i(j)
    };
    i.prototype = {
      addClass: function (l) {
        if (typeof l === "undefined") {
          return this
        }
        var k = l.split(" ");
        for (var m = 0; m < k.length; m++) {
          for (var n = 0; n < this.length; n++) {
            this[n].classList.add(k[m])
          }
        }
        return this
      },
      removeClass: function (l) {
        var k = l.split(" ");
        for (var m = 0; m < k.length; m++) {
          for (var n = 0; n < this.length; n++) {
            this[n].classList.remove(k[m])
          }
        }
        return this
      },
      hasClass: function (j) {
        if (!this[0]) {
          return false
        } else {
          return this[0].classList.contains(j)
        }
      },
      toggleClass: function (l) {
        var k = l.split(" ");
        for (var m = 0; m < k.length; m++) {
          for (var n = 0; n < this.length; n++) {
            this[n].classList.toggle(k[m])
          }
        }
        return this
      },
      attr: function (k, m) {
        if (arguments.length === 1 && typeof k === "string") {
          if (this[0]) {
            return this[0].getAttribute(k)
          } else {
            return undefined
          }
        } else {
          for (var l = 0; l < this.length; l++) {
            if (arguments.length === 2) {
              this[l].setAttribute(k, m)
            } else {
              for (var j in k) {
                this[l][j] = k[j];
                this[l].setAttribute(j, k[j])
              }
            }
          }
          return this
        }
      },
      removeAttr: function (j) {
        for (var k = 0; k < this.length; k++) {
          this[k].removeAttribute(j)
        }
        return this
      },
      data: function (m, n) {
        if (typeof n === "undefined") {
          if (this[0]) {
            var j = this[0].getAttribute("data-" + m);
            if (j) {
              return j
            } else {
              if (this[0].dom7ElementDataStorage && (m in this[0].dom7ElementDataStorage)) {
                return this[0].dom7ElementDataStorage[m]
              } else {
                return undefined
              }
            }
          } else {
            return undefined
          }
        } else {
          for (var l = 0; l < this.length; l++) {
            var k = this[l];
            if (!k.dom7ElementDataStorage) {
              k.dom7ElementDataStorage = {}
            }
            k.dom7ElementDataStorage[m] = n
          }
          return this
        }
      },
      transform: function (l) {
        for (var k = 0; k < this.length; k++) {
          var j = this[k].style;
          j.webkitTransform = j.MsTransform = j.msTransform = j.MozTransform = j.OTransform = j.transform = l
        }
        return this
      },
      transition: function (j) {
        if (typeof j !== "string") {
          j = j + "ms"
        }
        for (var l = 0; l < this.length; l++) {
          var k = this[l].style;
          k.webkitTransitionDuration = k.MsTransitionDuration = k.msTransitionDuration = k.MozTransitionDuration = k.OTransitionDuration = k.transitionDuration = j
        }
        return this
      },
      on: function (l, r, q, k) {
        function n(j) {
          var u = j.target;
          if (h(u).is(r)) {
            q.call(u, j)
          } else {
            var t = h(u).parents();
            for (var s = 0; s < t.length; s++) {
              if (h(t[s]).is(r)) {
                q.call(t[s], j)
              }
            }
          }
        }
        var m = l.split(" ");
        var o, p;
        for (o = 0; o < this.length; o++) {
          if (typeof r === "function" || r === false) {
            if (typeof r === "function") {
              q = arguments[1];
              k = arguments[2] || false
            }
            for (p = 0; p < m.length; p++) {
              this[o].addEventListener(m[p], q, k)
            }
          } else {
            for (p = 0; p < m.length; p++) {
              if (!this[o].dom7LiveListeners) {
                this[o].dom7LiveListeners = []
              }
              this[o].dom7LiveListeners.push({
                listener: q,
                liveListener: n
              });
              this[o].addEventListener(m[p], n, k)
            }
          }
        }
        return this
      },
      off: function (m, s, r, l) {
        var n = m.split(" ");
        for (var o = 0; o < n.length; o++) {
          for (var p = 0; p < this.length; p++) {
            if (typeof s === "function" || s === false) {
              if (typeof s === "function") {
                r = arguments[1];
                l = arguments[2] || false
              }
              this[p].removeEventListener(n[o], r, l)
            } else {
              if (this[p].dom7LiveListeners) {
                for (var q = 0; q < this[p].dom7LiveListeners.length; q++) {
                  if (this[p].dom7LiveListeners[q].listener === r) {
                    this[p].removeEventListener(n[o], this[p].dom7LiveListeners[q].liveListener, l)
                  }
                }
              }
            }
          }
        }
        return this
      },
      once: function (l, o, m, j) {
        var k = this;
        if (typeof o === "function") {
          o = false;
          m = arguments[1];
          j = arguments[2]
        }

        function n(p) {
          m(p);
          k.off(l, o, n, j)
        }
        k.on(l, o, n, j)
      },
      trigger: function (l, k) {
        for (var n = 0; n < this.length; n++) {
          var m;
          try {
            m = new window.CustomEvent(l, {
              detail: k,
              bubbles: true,
              cancelable: true
            })
          } catch (j) {
            m = document.createEvent("Event");
            m.initEvent(l, true, true);
            m.detail = k
          }
          this[n].dispatchEvent(m)
        }
        return this
      },
      transitionEnd: function (k) {
        var m = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"],
          o, p, l = this;

        function n(j) {
          if (j.target !== this) {
            return
          }
          k.call(this, j);
          for (o = 0; o < m.length; o++) {
            l.off(m[o], n)
          }
        }
        if (k) {
          for (o = 0; o < m.length; o++) {
            l.on(m[o], n)
          }
        }
        return this
      },
      width: function () {
        if (this[0] === window) {
          return window.innerWidth
        } else {
          if (this.length > 0) {
            return parseFloat(this.css("width"))
          } else {
            return null
          }
        }
      },
      outerWidth: function (j) {
        if (this.length > 0) {
          if (j) {
            return this[0].offsetWidth + parseFloat(this.css("margin-right")) + parseFloat(this.css("margin-left"))
          } else {
            return this[0].offsetWidth
          }
        } else {
          return null
        }
      },
      height: function () {
        if (this[0] === window) {
          return window.innerHeight
        } else {
          if (this.length > 0) {
            return parseFloat(this.css("height"))
          } else {
            return null
          }
        }
      },
      outerHeight: function (j) {
        if (this.length > 0) {
          if (j) {
            return this[0].offsetHeight + parseFloat(this.css("margin-top")) + parseFloat(this.css("margin-bottom"))
          } else {
            return this[0].offsetHeight
          }
        } else {
          return null
        }
      },
      offset: function () {
        if (this.length > 0) {
          var n = this[0];
          var k = n.getBoundingClientRect();
          var j = document.body;
          var m = n.clientTop || j.clientTop || 0;
          var l = n.clientLeft || j.clientLeft || 0;
          var p = window.pageYOffset || n.scrollTop;
          var o = window.pageXOffset || n.scrollLeft;
          return {
            top: k.top + p - m,
            left: k.left + o - l
          }
        } else {
          return null
        }
      },
      css: function (l, m) {
        var j;
        if (arguments.length === 1) {
          if (typeof l === "string") {
            if (this[0]) {
              return window.getComputedStyle(this[0], null).getPropertyValue(l)
            }
          } else {
            for (j = 0; j < this.length; j++) {
              for (var k in l) {
                this[j].style[k] = l[k]
              }
            }
            return this
          }
        }
        if (arguments.length === 2 && typeof l === "string") {
          for (j = 0; j < this.length; j++) {
            this[j].style[l] = m
          }
          return this
        }
        return this
      },
      each: function (j) {
        for (var k = 0; k < this.length; k++) {
          j.call(this[k], k, this[k])
        }
        return this
      },
      html: function (j) {
        if (typeof j === "undefined") {
          return this[0] ? this[0].innerHTML : undefined
        } else {
          for (var k = 0; k < this.length; k++) {
            this[k].innerHTML = j
          }
          return this
        }
      },
      text: function (k) {
        if (typeof k === "undefined") {
          if (this[0]) {
            return this[0].textContent.trim()
          } else {
            return null
          }
        } else {
          for (var j = 0; j < this.length; j++) {
            this[j].textContent = k
          }
          return this
        }
      },
      is: function (m) {
        if (!this[0]) {
          return false
        }
        var j, l;
        if (typeof m === "string") {
          var k = this[0];
          if (k === document) {
            return m === document
          }
          if (k === window) {
            return m === window
          }
          if (k.matches) {
            return k.matches(m)
          } else {
            if (k.webkitMatchesSelector) {
              return k.webkitMatchesSelector(m)
            } else {
              if (k.mozMatchesSelector) {
                return k.mozMatchesSelector(m)
              } else {
                if (k.msMatchesSelector) {
                  return k.msMatchesSelector(m)
                } else {
                  j = h(m);
                  for (l = 0; l < j.length; l++) {
                    if (j[l] === this[0]) {
                      return true
                    }
                  }
                  return false
                }
              }
            }
          }
        } else {
          if (m === document) {
            return this[0] === document
          } else {
            if (m === window) {
              return this[0] === window
            } else {
              if (m.nodeType || m instanceof i) {
                j = m.nodeType ? [m] : m;
                for (l = 0; l < j.length; l++) {
                  if (j[l] === this[0]) {
                    return true
                  }
                }
                return false
              }
              return false
            }
          }
        }
      },
      index: function () {
        if (this[0]) {
          var j = this[0];
          var k = 0;
          while ((j = j.previousSibling) !== null) {
            if (j.nodeType === 1) {
              k++
            }
          }
          return k
        } else {
          return undefined
        }
      },
      eq: function (j) {
        if (typeof j === "undefined") {
          return this
        }
        var k = this.length;
        var l;
        if (j > k - 1) {
          return new i([])
        }
        if (j < 0) {
          l = k + j;
          if (l < 0) {
            return new i([])
          } else {
            return new i([this[l]])
          }
        }
        return new i([this[j]])
      },
      append: function (m) {
        var k, l;
        for (k = 0; k < this.length; k++) {
          if (typeof m === "string") {
            var n = document.createElement("div");
            n.innerHTML = m;
            while (n.firstChild) {
              this[k].appendChild(n.firstChild)
            }
          } else {
            if (m instanceof i) {
              for (l = 0; l < m.length; l++) {
                this[k].appendChild(m[l])
              }
            } else {
              this[k].appendChild(m)
            }
          }
        }
        return this
      },
      prepend: function (m) {
        var k, l;
        for (k = 0; k < this.length; k++) {
          if (typeof m === "string") {
            var n = document.createElement("div");
            n.innerHTML = m;
            for (l = n.childNodes.length - 1; l >= 0; l--) {
              this[k].insertBefore(n.childNodes[l], this[k].childNodes[0])
            }
          } else {
            if (m instanceof i) {
              for (l = 0; l < m.length; l++) {
                this[k].insertBefore(m[l], this[k].childNodes[0])
              }
            } else {
              this[k].insertBefore(m, this[k].childNodes[0])
            }
          }
        }
        return this
      },
      insertBefore: function (n) {
        var k = h(n);
        for (var l = 0; l < this.length; l++) {
          if (k.length === 1) {
            k[0].parentNode.insertBefore(this[l], k[0])
          } else {
            if (k.length > 1) {
              for (var m = 0; m < k.length; m++) {
                k[m].parentNode.insertBefore(this[l].cloneNode(true), k[m])
              }
            }
          }
        }
      },
      insertAfter: function (n) {
        var k = h(n);
        for (var l = 0; l < this.length; l++) {
          if (k.length === 1) {
            k[0].parentNode.insertBefore(this[l], k[0].nextSibling)
          } else {
            if (k.length > 1) {
              for (var m = 0; m < k.length; m++) {
                k[m].parentNode.insertBefore(this[l].cloneNode(true), k[m].nextSibling)
              }
            }
          }
        }
      },
      next: function (j) {
        if (this.length > 0) {
          if (j) {
            if (this[0].nextElementSibling && h(this[0].nextElementSibling).is(j)) {
              return new i([this[0].nextElementSibling])
            } else {
              return new i([])
            }
          } else {
            if (this[0].nextElementSibling) {
              return new i([this[0].nextElementSibling])
            } else {
              return new i([])
            }
          }
        } else {
          return new i([])
        }
      },
      nextAll: function (m) {
        var l = [];
        var j = this[0];
        if (!j) {
          return new i([])
        }
        while (j.nextElementSibling) {
          var k = j.nextElementSibling;
          if (m) {
            if (h(k).is(m)) {
              l.push(k)
            }
          } else {
            l.push(k)
          }
          j = k
        }
        return new i(l)
      },
      prev: function (j) {
        if (this.length > 0) {
          if (j) {
            if (this[0].previousElementSibling && h(this[0].previousElementSibling).is(j)) {
              return new i([this[0].previousElementSibling])
            } else {
              return new i([])
            }
          } else {
            if (this[0].previousElementSibling) {
              return new i([this[0].previousElementSibling])
            } else {
              return new i([])
            }
          }
        } else {
          return new i([])
        }
      },
      prevAll: function (m) {
        var l = [];
        var j = this[0];
        if (!j) {
          return new i([])
        }
        while (j.previousElementSibling) {
          var k = j.previousElementSibling;
          if (m) {
            if (h(k).is(m)) {
              l.push(k)
            }
          } else {
            l.push(k)
          }
          j = k
        }
        return new i(l)
      },
      parent: function (l) {
        var k = [];
        for (var j = 0; j < this.length; j++) {
          if (l) {
            if (h(this[j].parentNode).is(l)) {
              k.push(this[j].parentNode)
            }
          } else {
            k.push(this[j].parentNode)
          }
        }
        return h(h.unique(k))
      },
      parents: function (m) {
        var l = [];
        for (var j = 0; j < this.length; j++) {
          var k = this[j].parentNode;
          while (k) {
            if (m) {
              if (h(k).is(m)) {
                l.push(k)
              }
            } else {
              l.push(k)
            }
            k = k.parentNode
          }
        }
        return h(h.unique(l))
      },
      find: function (o) {
        var l = [];
        for (var m = 0; m < this.length; m++) {
          var k = this[m].querySelectorAll(o);
          for (var n = 0; n < k.length; n++) {
            l.push(k[n])
          }
        }
        return new i(l)
      },
      children: function (o) {
        var l = [];
        for (var m = 0; m < this.length; m++) {
          var k = this[m].childNodes;
          for (var n = 0; n < k.length; n++) {
            if (!o) {
              if (k[n].nodeType === 1) {
                l.push(k[n])
              }
            } else {
              if (k[n].nodeType === 1 && h(k[n]).is(o)) {
                l.push(k[n])
              }
            }
          }
        }
        return new i(h.unique(l))
      },
      remove: function () {
        for (var j = 0; j < this.length; j++) {
          if (this[j].parentNode) {
            this[j].parentNode.removeChild(this[j])
          }
        }
        return this
      },
      add: function () {
        var k = this;
        var l, m;
        for (l = 0; l < arguments.length; l++) {
          var n = h(arguments[l]);
          for (m = 0; m < n.length; m++) {
            k[k.length] = n[m];
            k.length++
          }
        }
        return k
      }
    };
    h.fn = i.prototype;
    h.unique = function (j) {
      var l = [];
      for (var k = 0; k < j.length; k++) {
        if (l.indexOf(j[k]) === -1) {
          l.push(j[k])
        }
      }
      return l
    };
    return h
  })();
  var g = ["jQuery", "Zepto", "Dom7"];
  for (var e = 0; e < g.length; e++) {
    if (window[g[e]]) {
      b(window[g[e]])
    }
  }
  var d;
  if (typeof c === "undefined") {
    d = window.Dom7 || window.Zepto || window.jQuery
  } else {
    d = c
  }

  function b(h) {
    h.fn.swiper = function (j) {
      var i;
      h(this).each(function () {
        var k = new f(this, j);
        if (!i) {
          i = k
        }
      });
      return i
    }
  }
  if (d) {
    if (!("transitionEnd" in d.fn)) {
      d.fn.transitionEnd = function (h) {
        var l = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"],
          n, o, k = this;

        function m(i) {
          if (i.target !== this) {
            return
          }
          h.call(this, i);
          for (n = 0; n < l.length; n++) {
            k.off(l[n], m)
          }
        }
        if (h) {
          for (n = 0; n < l.length; n++) {
            k.on(l[n], m)
          }
        }
        return this
      }
    }
    if (!("transform" in d.fn)) {
      d.fn.transform = function (k) {
        for (var j = 0; j < this.length; j++) {
          var h = this[j].style;
          h.webkitTransform = h.MsTransform = h.msTransform = h.MozTransform = h.OTransform = h.transform = k
        }
        return this
      }
    }
    if (!("transition" in d.fn)) {
      d.fn.transition = function (h) {
        if (typeof h !== "string") {
          h = h + "ms"
        }
        for (var k = 0; k < this.length; k++) {
          var j = this[k].style;
          j.webkitTransitionDuration = j.MsTransitionDuration = j.msTransitionDuration = j.MozTransitionDuration = j.OTransitionDuration = j.transitionDuration = h
        }
        return this
      }
    }
  }
  window.Swiper = f
})();
if (typeof (module) !== "undefined") {
  module.exports = window.Swiper
} else {
  if (typeof define === "function" && define.amd) {
    define([], function () {
      return window.Swiper
    })
  }
};
